GemfileでRubygemを指定するときの〜>と> =の違いは何ですか?
質問
Gemfileで次の表記(〜>)がよく表示されます。
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
私はサイン(> =)がちょうど大きいか等しいかを知っていますが、(〜>)表記はどういう意味ですか?それらは両方とも同じですか、それとも大きな違いがありますか?
解決
それはです 悲観的なバージョンの制約. 。 Rubygemsは、提供されたバージョンの最後の数字を増加させ、最大バージョンに達するまでそれを使用します。それで ~>0.8.5
意味的には次のとおりです。
gem "cucumber", ">=0.8.5", "<0.9.0"
それについて考える簡単な方法は、最後の数字が任意の値に増加することで大丈夫ですが、文字列に先行するものはあなたが提供したものよりも大きくすることはできません。したがって、 ~>0.8.5
, 、5以上の場合、3番目の数字(5)では、任意の値は許容されますが、先頭の0.8は「0.8」でなければなりません。
たとえば、0.9バージョンがいくつかの壊れた変更を実装すると思われる場合、これを行うかもしれませんが、0.8.xリリースシリーズ全体がバグフィックスだけであることがわかっています。
ただし、単に使用します ">=0.8.5"
それを示します どれか 0.8.5以降(または等しい)以降のバージョンは許容されます。上限はありません。
他のヒント
@millisamiこのような悲観的な制約を使用して、GEMSPECに依存関係を追加するために使用することもできます。
gem.add_runtime_dependency "thor", "~> 0.18.1"
宝石の開発についてあまり知らない場合、またはちょうどそれに入っている場合、これらはいくつかの良い参照です:
所属していません StackOverflow