Rails应用程序与乘客和capistrano挑选错误的宝石

时间:2016-08-02 05:51:26

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

我正在尝试使用Capistrano部署rails app。部署应用程序,捆绑安装在中     〜/ .rvm / bin / rvm默​​认执行bundle install --path / home / pro / www / shared / bundle --without development test --deployment --quiet

但是当我运行应用程序时,它使用默认的gemset而不是来自shared / bundled的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(生产)    set:deploy_to,&#39; / home / pro / www&#39;

2 个答案:

答案 0 :(得分:0)

问题可能在于您的配置。由于rvm根据ruby版本设置$GEM_HOME env变量,而bundler默认它的路径(即BUNDLE_PATH)到$GEM_HOME(至少在开发中)。您可以在bundler config中覆盖它。

在您的应用程序目录中。

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

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

查看捆绑包documentation

This也是一篇不错的博文。

答案 1 :(得分:0)

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