3

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

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 に答える
1

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 に答える
1

Heroku は、アプリが実行している Ruby のメジャー バージョンまたはマイナー バージョンを、パッチ レベルに対してのみ変更することはありません。

Gemfile では、メジャー/マイナーを指定できます

ruby '1.9.2'

ただし、Heroku が管理するため、パッチ レベルを指定することはできません。また、アプリが Heroku 上にある場合、Rvm は使用されないため、違いはありません。そのため、Heroku が ruby​​ のパッチ レベルを変更すると (変更ログに示されているように)、この種の動作が発生することがわかります。

于 2013-06-19T07:22:46.110 に答える