【问题标题】:How to set the ruby version in capistrano using rbenv如何使用 rbenv 在 capistrano 中设置 ruby​​ 版本
【发布时间】:2014-12-10 00:36:12
【问题描述】:

我的生产服务器上有一个 Rails 4.2.0.beta2 应用程序,运行 Ruby 2.1.2。我已经使用 rbenv 安装了 Ruby 2.13,但尚未使其成为全局版本。

在我的开发机器上,我安装了 Ruby 2.1.3,还使用 ​​rbenv 并在我的应用程序中运行 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​​ 版本,然后 bundle install 吗?

如果我需要手动执行此操作,更改 rbenv 中的 ruby​​ 全局是否会导致我的应用程序由于 gem 不匹配而崩溃? ruby 版本是否通过 rbenv 在应用程序之间隔离?

我已尝试运行此部署配方,但失败了

rbenv: bundle: command not found
  The `bundle' command exists in these Ruby versions:
    2.1.2

【问题讨论】:

标签: ruby-on-rails capistrano rbenv


【解决方案1】:

我不得不

rbenv global 2.1.3
gem install bundler
rbenv rehash

然后我跑了

cap production deploy

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

【讨论】:

  • 这个问题已经有 2 年了,我遇到了完全相同的问题。我无法更改我的全局红宝石,您找到解决方案了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多