【发布时间】:2011-11-10 21:51:31
【问题描述】:
当我手动安装与通过 bundler+capistrano 安装时,我似乎在生产的 gem 路径之间存在差异。
在 rvm 安装 ruby 1.9.2 并创建 gemset“myapp”之后,我确实通过 gem install bundler 安装了 bundler。
已安装到路径中:
/usr/local/rvm/gems/ruby-1.9.2-p290@myapp/gems
Bundler 通过 Capistrano 将剩余的 gem 安装到:
/usr/local/rvm/gems/ruby-1.9.2-p290@myapp/ruby/1.9.1/gems
我的 deploy.rb 文件的开头是:
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
require 'bundler/capistrano'
set :rails_env, 'production'
set :rvm_type, :system
set :rvm_ruby_string, "ruby-1.9.2-p290@myapp"
set :rvm_path, "/usr/local/rvm"
set :rvm_bin_path, "#{rvm_path}/bin"
set :rvm_lib_path, "#{rvm_path}/lib"
set :default_environment, {
'PATH' => "#{rvm_path}/gems/ruby/1.9.1/bin:#{rvm_bin_path}/bin:$PATH",
'RUBY_VERSION' => '1.9.2',
'GEM_HOME' => "#{rvm_path}/gems/#{rvm_ruby_string}",
'GEM_PATH' => "#{rvm_path}/gems/#{rvm_ruby_string}",
'BUNDLE_PATH' => "#{rvm_path}/gems/#{rvm_ruby_string}"
}
set :bundle_dir, "#{rvm_path}/gems/#{rvm_ruby_string}"
set :bundle_flags, "--deployment --verbose"
【问题讨论】:
-
您能否更具体地说明差异?
-
我将路径加粗。 Bundler 基本上安装到我的 GEM_PATH+"ruby/1.9.1/gems" 而我希望它单独进入我的 GEM_PATH。
-
在
ruby/1.9.1子目录中安装gem 似乎是常态:stackoverflow.com/questions/6352262/…。这会给您带来问题(缺少宝石等)吗? -
如果您不使用 RVM,则该规范是有意义的,但如果您使用,则没有。如果您使用的是 RVM,那么您的 rubies 及其版本名称和 gemset 已经是您的 GEMPATH 名称的一部分,为什么现在应该根据 ruby 版本捆绑版本我的 gem!这很愚蠢。
标签: ruby-on-rails-3 gem rvm capistrano bundler