首页 文章

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

提问于
浏览
1

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

    我不得不

    rbenv global 2.1.3
    gem install bundler
    rbenv rehash
    

    然后我跑了

    cap production deploy
    

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

相关问题