【问题标题】:RVM, Capistrano and bundler path issuesRVM、Capistrano 和捆绑程序路径问题
【发布时间】: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


【解决方案1】:

令人讨厌的是,bundler 人员无意与 RVM 一起工作,并希望 bundler 管理 ruby​​ 版本,所以到目前为止,我的解决方法是在我的 GEM_PATH 目录中简单地符号链接 ruby​​ 和 1.9.1,指向“。”

【讨论】:

    【解决方案2】:

    在您创建 gemset 之后,您是否在安装 bundler 之前明确地“rvm use 1.9.2@myapp”?

    【讨论】:

      【解决方案3】:

      我在 capistrano/bundler/rvm 设置方面遇到过类似问题。

      至少在我的情况下,如果我运行

      bundle exec <command>
      

      来自 capistrano 创建的安装:

      /u/apps/<app-name>/current
      

      我拿起我的 GEMDIR

      bundle exec env | grep GEM_HOME
      GEM_HOME=/u/apps/app-name/shared/bundle/ruby/1.9.1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-15
        相关资源
        最近更新 更多