在部署期间更改Ruby版本

时间:2013-03-26 02:16:15

标签: ruby deployment capistrano bundler

我有一个包含3个Rails应用程序的盒子。我不想升级其中一个应用程序,以便它使用Ruby 2.0.0,而其他应用程序在1.9.3-p394上运行。我通过Rvm安装了这些Rubies。

我正在尝试通过它的Gemfile来控制每个应用程序使用的Ruby版本。

# Gemfile
ruby '2.0.0'

所以,我在本地更改了Gemfile中的版本号,确保它全部工作,提交,现在我正在尝试将更改部署到服务器。

但是,cap deploy此时失败

bundle install --gemfile [path to release Gemfile] --path [path to app bundle] --deployment --quiet --without development test

,因为

Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0

这在技术上是正确的,我的Gemfile确实指定了2.0.0,并且该应用当前正在1.9.3上运行。我想在捆绑之前让它改变版本。我该怎么做?

3 个答案:

答案 0 :(得分:1)

您的PATH设置不正确。您可能没有bin:作为路径中的第一个条目。这会导致这个错误。

即使您没有使用Heroku,也值得阅读此页面以解决该问题:https://devcenter.heroku.com/articles/ruby-versions

以下是答案的链接,该答案将说明如何更改服务器上的PATH:Capistrano: Can I set an environment variable for the whole cap session?

答案 1 :(得分:0)

如果你有rvm,也许你可以尝试

rvm use 2.0.0
在打包电话之前

答案 2 :(得分:0)

如果您正在使用rvm,请在服务器上将默认值设置为ruby 2.0.0

rvm --default use 2.0.0

解决了我从Mac部署到AWS服务器的问题 - 但我想如果我需要更新旧网站,我必须在部署之前将默认值设置回1.9.3。