我目前正在使用capistrano 3在多个环境中部署我的rails 4应用程序。我想尝试在开发中转向ruby 2.1.2(我在stage / prod中运行2.0.0)。假设我使用的是rbenv,是否有可能在单个Gemfile中以某种方式指定它?
我试图在我的Gemfile
中关注,但无济于事:
# Gemfile
group :development do
ruby '2.1.2'
end
group :staging, :production do
ruby '2.0.0'
end
当cap deploy在开发上运行时,由于感知版本不匹配而中止。
Your Ruby version is 2.1.2, but your Gemfile specified 2.0.0
这是它试图运行的命令。
cd /home/rails/releases/20140701151045 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.2 RAILS_ENV=development RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.2 ~/.rbenv/bin/rbenv exec bundle exec rake assets:precompile )
非常感谢您的想法。谢谢!
更新 在从@toolz输入并查看捆绑代码之后,这是不可能的(或者一个好主意)。有几种选择:
我将使用选项#3,它将解决我的问题,似乎是最好的做法。
答案 0 :(得分:5)
我做到了
Gemfile
if ENV["RAILS_ENV"] == "development"
ruby '2.0.0'
elsif ENV["RAILS_ENV"] == "production"
ruby '2.1.0'
end
然后假设你正在使用rvm,你必须创建一个capistrano任务
rvm use 2.1.0
关于生产