在heroku推送上更改Ruby版本

时间:2013-06-19 05:26:47

标签: ruby-on-rails ruby git heroku rvm

在推入heroku时更改了Ruby版本。

       Ruby version change detected. Clearing bundler cache.
   Old: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
   New: ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux]

现在 heroku run 'ruby -v'返回ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux]

ruby -v仍在返回ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

这是我的rvm列表

rvm list

rvm rubies

=* ruby-1.9.2-p290 [ i686 ]

# => - current
# =* - current && default
#  * - default

我不想更改ruby版本。怎么会发生?我该如何解决这个问题。请帮忙。

4 个答案:

答案 0 :(得分:3)

我得到了相同的信息所以我认为这是Heroku Ruby版本的变化(介意只有补丁级别改变了)

您可能无法在Heroku端恢复此更改,但您肯定应该升级自己的Ruby版本。

答案 1 :(得分:2)

Heroku有关于如何指定ruby版本的说明。该文件在此处:https://devcenter.heroku.com/articles/ruby-versions。正如@JohnBeynon所说,Heroku是一个PaaS,所以他们为你管理很多东西,包括补丁版本(见下一段)。由于Heroku不使用RVM,因此没有任何RVM设置会更改Heroku上的任何内容。

要指定所需的ruby版本,请将其添加到Gemfile:

ruby "1.9.2"

在您的情况下,您无法指定补丁版本,因此您无法解决此问题;但是,这个补丁版本的改变是件好事。它仍然是兼容的,它只会有更多的安全更新和错误修复。您还应升级本地计算机,而不是尝试降级服务器。还有更多内容:https://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku

  

虽然您可以为您的应用程序指定Ruby的版本,但您不能   指定补丁版本,例如Ruby 1.9.2-p290。经常使用Ruby补丁   包括重要的错误和安全修复程序,并且非常兼容。   Heroku将提供最安全的补丁级别   您要求的版本号。

答案 2 :(得分:1)

Heroku永远不会改变您的应用程序仅针对补丁级别运行的主要或次要版本的Ruby。

在您的Gemfile中,您可以使用

指定主要/次要
ruby '1.9.2'

但是你无法指定补丁级别,因为Heroku会为你管理。此外,当你的应用程序在Heroku Rvm上时,不使用,所以不会有所作为。因此,当Heroku更改ruby的补丁级别时(如其更改日志中所示),您将看到此类行为发生。

答案 3 :(得分:1)

你不必在本地更改ruby版本,ruby补丁级别不应该引入不兼容性,你应该在较旧的补丁上进行良好的开发并在较新的部署... ...说坏事可能一如既往地发生而且ruby团队可能会被迫因安全问题而在patchlevel中引入不兼容性。

所以最好用以下方法升级本地ruby版本:

rvm get stable
rvm upgrade 1.9.2

或更明确:

rvm upgrade 1.9.2-p290 1.9.2-p320