簡體   English   中英

在heroku推送上更改Ruby版本

[英]Ruby version change on heroku push

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版本。 怎么會發生? 我該如何解決這個問題。 請幫忙。

我得到了相同的信息所以我認為這是Heroku Ruby版本的變化(介意只有補丁級別更改)

您可能無法在Heroku端恢復此更改,但您肯定應升級自己的Ruby版本。

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將提供您所請求的任何次要版本號的最安全補丁級別。

Heroku永遠不會改變您的應用程序僅針對補丁級別運行的主要或次要版本的Ruby。

在您的Gemfile中,您可以指定major / minor

ruby '1.9.2'

但是你無法指定補丁級別,因為Heroku將為你管理。 此外,當你的應用程序在Heroku Rvm上時,不使用,所以不會有所作為。 因此,當Heroku更改ruby的補丁級別時(如其更改日志中所示),您將看到此類行為發生。

你不必在本地更改ruby版本,ruby補丁級別不應該引入不兼容性,你應該在較舊的補丁上進行良好的開發並在較新的部署... ...說壞事可能會一如既往地發生,而ruby團隊可能會被迫引入由於安全問題,補丁級別不兼容。

所以最好用以下方法升級你的本地ruby版本:

rvm get stable
rvm upgrade 1.9.2

或者更明確:

rvm upgrade 1.9.2-p290 1.9.2-p320

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM