悲観的バージョン演算子(~>)
Rubyでの開発を行っていると一度は出会う 悲観的バージョン演算子(~>)(Pessimistic Operator)。Gemfileで例えば**~>0.7.7**などと記述されているのを見て、初めての方だと混乱される方も多いだろうし、少し慣れている方でもついググってしまう方もおられるかもしれない。そこでここでは初めての方には一先ず理解してもらうべく、初見ではない方にはもうググらなくて済むことを願って解説していければと思います。
x.x.xの例
x.x.xの形式でバージョン指定が行われている場合、例えば下記の様にGemfileが記述されている場合を考えてみる。
gem 'rails', '~>4.2.6'
これは結論から言うと4.2.6 <= 'rails' < 4.3
となる。
ではどの様に考えれば、この結論に至るのかを順を追って説明したい。
まずは最小値である下限から考えてみる
上記の例を使用するとこの場合の下限は4.2.6となることが分かる。これでまずは下限が決まった。簡単。
次にどこまでが上限であるかを考えていく
同じく上記の例を使用すると、まずは4.2.6の1番右端にある6を削ってみる。そうすると4.2になる。
それから4.2に0.1を加算してあげる。つまり4.3。(深く考えずに機械的に1番小さい桁に1を足せば良い。)
この4.3より小さい値つまりは4.3未満であればOK。
結果
4.2.6以上4.3未満
x.xの例
次にx.x.xの例だけではイマイチ理解出来なかった。若しくは別のパターンも見てみたい方々の為にもう一例。
Gemfileに下記の通り記述されていた場合を考えてみる。
gem 'rails', '~>4.2'
これも結論から言うと4.2 <= 'rails' < '5'
となる。
では同じ要領で見ていこう。
まずは下限を決める
これは~>で指定されている4.2で決まり。後は上限だけ。
どこまでが上限になるか考える
4.2の1番右端の数字を削る。ここでは2。結果4となる。
次に1番小さい桁に1を足してあげると5が導かれる。つまり5未満であればOK。
結果
4.2以上5未満
まとめ
悲観的バージョン演算子が登場したら下記の手順を思い出して頂ければ、今後慌てずググらず対応出来る。
- 下限を決める
- 上限を決める(1番右端の数字を削って1を加算した数値未満)