如何使用rbenv在capistrano中设置ruby版本

时间:2014-10-15 03:26:10

标签: ruby-on-rails capistrano rbenv

我在运行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

1 个答案:

答案 0 :(得分:0)

我不得不

rbenv global 2.1.3
gem install bundler
rbenv rehash

然后我跑了

cap production deploy
再次,这一切都很好。我不知道我的deploy.rb中的ruby_version指令应该做什么。