gemspec や Gemfile で gem のバージョン番号を指定するときに '~> 1.2'
のように書ける (pessimistic version operator とかいうものらしい)
簡潔に書けて便利な反面、簡潔すぎて「'~> 1.2'
って上限いくつだよ」といつもわからなくなるのでわかりやすい ['>= 1.2', '< 2']
のような表記に展開する方法を調べた。
Gem::Version#bump
で Semantic versioning を意識した「次のバージョン番号」が得られるので、
version = "1.2"
"['>= #{version}', '< #{Gem::Version.create(version).bump}']"
これで ok. テストコードつきのサンプルコードはこちら
オマケ: ブラウザで試せる Gem pessimistic version expander も作った (jsdo.it と lleval を利用)