【问题标题】:Rails app with passenger and capistrano picking wrong gemsetRails 应用程序,乘客和 capistrano 挑选错误的宝石
【发布时间】:2016-12-07 08:21:42
【问题描述】:

我正在尝试使用 Capistrano 部署 Rails 应用程序。应用已部署,捆绑安装运行在
~/.rvm/bin/rvm 默认做 bundle install --path /home/pro/www/shared/bundle --without development test --deployment --quiet

但是当我运行应用程序时,它使用的是默认 gemset,而不是来自共享/捆绑的 gem。我收到以下错误

Message from application: <p>It looks like Bundler could not find a gem. Maybe you didn't install all the gems that this application needs. To install your gems, please run:</p>


Could not find rake-11.2.2 in any of the sources (Bundler::GemNotFound)

<pre>  /home/pro/.rvm/gems/ruby-2.3.1@gemset/gems/bundler-1.12.5/lib/bundler/spec_set.rb:95:in `block in materialize&#39;

我不明白这里的问题。我的 deploy.rb 文件有:

set :application, 'rails_a[['
set :repo_url, 'git@bitbucket.org:user/app.git'
# set :rvm_ruby_version, 'ruby-2.3.1@gemset'

设置:阶段,%w(生产) 设置 :deploy_to, '/home/pro/www'

【问题讨论】:

    标签: ruby-on-rails capistrano capistrano3 rvm-capistrano


    【解决方案1】:

    问题可能出在您的配置上。由于 rvm 根据 ruby​​ 版本设置 $GEM_HOME env 变量,并且 bundler 默认它的路径(即BUNDLE_PATH)为$GEM_HOME(至少在开发中)。您可以在捆绑器配置中覆盖它。

    在您的应用程序目录中。

    bundle config --local path /home/pro/www/shared/bundle
    

    local 标志将保留特定于您的应用程序的更改,您还应该从您的 .gitignore 中删除 .bundle 以将您的捆绑配置推送到您的部署服务器。

    查看捆绑配置documentation

    This 也是一篇不错的博文。

    【讨论】:

      【解决方案2】:
      Capistrano and RVM
      
      [ruby]
      $:.unshift(File.expand_path(‘./lib’, ENV['rvm_path']))
      require "rvm/capistrano"
      set :rvm_ruby_string, ‘ruby-1.9.2-head@rails3.2′
      set :rvm_type, :user
      [/ruby]
      

      这里@rails3.2 是gemset。当 capistrano 调用 bundle install 时,它会使用这个 gemset。所以你需要设置 rvm_ruby_string

      【讨论】:

        猜你喜欢
        • 2015-04-09
        • 2011-04-26
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        • 2016-06-19
        • 1970-01-01
        相关资源
        最近更新 更多