3

Ruby 版本在推入 heroku 时发生更改。

       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

4 回答 4

3

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 将为您请求的任何次要版本号提供最安全的补丁级别。

于 2013-06-19T07:30:39.220 回答
3

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

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

于 2013-06-19T17:06:20.797 回答
1

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

在您的 Gemfile 中,您可以指定主要/次要与

ruby '1.9.2'

但是您不能指定补丁级别,因为 Heroku 会为您管理。此外,当您的应用在 Heroku 上时,不会使用 Rvm,因此不会产生影响。因此,随着 Heroku 更改 ruby​​ 的补丁级别(如其更改日志中所示),您将看到这种类型的行为发生。

于 2013-06-19T07:22:46.110 回答
1

您不必在本地更改 ruby​​ 版本,ruby 补丁级别不应引入不兼容性,您应该可以在较旧的补丁上进行开发并在较新的补丁上进行部署......说坏事可能会像往常一样发生,并且 ruby​​ 团队可能会被迫引入由于安全问题,补丁级别不兼容。

所以最好的方法是升级你的本地 ruby​​ 版本:

rvm get stable
rvm upgrade 1.9.2

或更明确地说:

rvm upgrade 1.9.2-p290 1.9.2-p320
于 2013-06-19T19:36:49.373 回答