2016-05-27 10 views
2

の特定のバージョンが必要です。私は2.5.xで失敗し、2.6.xに合格するテストがあるので、ユーザーが2.6.x以上を使用していることを確認したい。私はあなたがRubyGemsののexplicitly update the versionをすることができます知っていますが、何らかの形で定期的に宝石のために特定のバージョンのことができますように「必要」ことができますか?は、私はプロジェクトのため<strong>RubyGemsの</strong>の特定のバージョンを持ちたいRubyGemsの

+0

どのようなコンテキストで必要ですか? – tadman

+0

@tadmanはどういうわけか、テストを実行し、RubyGemsの自身の彼らのバージョンが必要なバージョンの下にあるコードを開発しようとしている開発者に警告します。 'bundle install'を実行すると正しい宝石がインストールされますが、RubyGemsについては何も言いません。 'ruby-2.3.1'は' ruby​​gems-2.5.x'をインストールしていますが、 'rubygems-2.6.x'だけで解決された問題があったので問題が発生しました。答えは「ドキュメントに追加する」ことができると思いますが、他のすべてがチェックできるので、これも同様に可能であると私は期待していました。 –

+0

「ドキュメントに追加」の手順のように聞こえます。 – tadman

答えて

2

私はそれが単一Rubyのインストールで複数のRubyGemsのバージョンの中から選択することができます信じていません。しかし、必要なバージョンが使用されていることを確認することができます。 Gemfile(Rubyファイルのみ)の先頭や、バンドルを使用しないスクリプトの冒頭など、アプリケーションの起動時に早く実行される場所を次のように記述します。

required_rubygems_version = '2.6.0' 
if Gem.rubygems_version < Gem::Version.create(required_rubygems_version) 
    raise "Please upgrade to rubygems #{required_rubygems_version}" 
end 
2

あなたは、Ruby Gemsのバージョンが間違っている場合は、アプリケーションの起動からRailsのを防ぐことができますあなたのconfig/initializersでスタートアップチェックを追加することができます。

config/initializers/gem_version_check.rbで新しいファイルを作成し、このコードを追加:

required_rubygems_version 
if Gem.rubygems_version < Gem::Version.new(required_rubygems_version) 
    raise RuntimeError, "Ruby Gems version is #{Gem.rubygems_version}, but this project requires Ruby Gems >= #{required_rubygems_version} to be used." 
end 

これは、例外を発生させるとRuby Gemsのバージョンは、起動時に間違っている場合は、アプリケーションの初期化が失敗する原因になります。

/Users/spock/devo/games/config/initializers/gems_version_check.rb:3:in ` ':ルビー宝石のバージョンは2.4.8ですが、このプロジェクトは、Rubyの宝石> = 2.6を使用することが必要です。 (RuntimeError)

これは、Railsサーバーが開始されるたびに、またすべての環境で実行されるため、テスト環境と本番環境が適切に構成されていることの健全性チェックも実行されます。

+0

このアプローチでは、ルビジェンが2桁のマイナーバージョン番号(例:2.10.0)を持つ場合に誤検出が発生します。しかし、これまでのところはありませんでした! –

+0

私は将来Rubyistsのために、より堅牢なバージョンチェックを行っています。 –

関連する問題