rubygem のバージョンの仕様は?
rubygems ないし bundler で利用される gem のバージョンの仕様はどうなっていますか?
あるバージョン文字列が与えられたときに、それらの大小はどのように決定されていますか?
とくに、以下のようなコーナーケースの挙動が知りたいと思っています。- 1.0.0 vs 1.0.0.0
- 1.0.0 vs 1.0.0-beta
- 1.0.0 vs 1.0.0.beta
それをふまえて、 Gemfile における
~> V.V
(ないし~> V.V.V
) はどのような動作をしますか?
背景
gem においては --pre でダウンロードされる、 betaN バージョンを bundler で指定したいと思いました。bundler の github issue によると、
gem "eventmachine", ">= 1.0.0.beta"
のように記述すればよいと書いてあります。
この指定が、ちょっときもちわるいと思い、正しい挙動を理解しておかないと、後々ハマりそうだな、と思ったので、質問しています。