我在运行Ruby 2.1.2的生产服务器上有一个Rails 4.2.0.beta2应用程序。我已经使用rbenv安装了Ruby 2.13,但尚未将其设为全局。
在我的开发机器上,我已经安装了Ruby 2.1.3,在我的应用程序中也使用rbenv和run bundle来更新新ruby版本的gem。我的宝石包括
group :development do
# Use Capistrano for deployment
gem 'capistrano', '~> 3.2'
gem 'capistrano-rails', '~> 1.1.1'
gem 'capistrano-bundler'
gem 'capistrano-rbenv', '~> 2.0'
gem 'capistrano-unicorn-nginx', '~> 2.0'
gem 'capistrano-postgresql', '~> 3.0'
end
我正在使用Capistrano 3.2.1,而在我的deploy.rb文件中,我已经设置了
set :rbenv_type, :user
set :rbenv_ruby, "2.1.3"
我的问题是,我的Capistrano配方会切换服务器ruby版本并加载我所有的新宝石吗?我知道它通常会自动加载新的宝石。具体来说,capistrano会运行rbenv global 2.1.3来更改ruby版本然后捆绑安装吗?
如果我需要手动执行此操作,将更改rbenv中的ruby全局会导致我的应用程序由于宝石不匹配而爆炸吗? rbenv是否在应用程序之间隔离了ruby版本?
我试图运行此部署配方,但它失败并带有
rbenv: bundle: command not found
The `bundle' command exists in these Ruby versions:
2.1.2
答案 0 :(得分:0)
我不得不
rbenv global 2.1.3
gem install bundler
rbenv rehash
然后我跑了
cap production deploy
再次,这一切都很好。我不知道我的deploy.rb中的ruby_version指令应该做什么。