Posted at

Ruby2.1.xを使うためのGemfileの指定について

More than 3 years have passed since last update.

rubyの2.1系からセマンティックバージョニングに移ったので3桁目がよく更新される。

Rubyのバージョン指定として、Gemfileに

ruby '2.1.5'

とかするけど、チーム開発してたりすると誰かが更新したらそれ取り込んだ時点で強制的にアップデートしなきゃいけなったりするの若干面倒で、自分のタイミングで更新したいとかあるはず。

それどう指定すればいいんだろうと思って色々調べてた時に見つけたのがこちら。Gemfileで下記のように指定する。

target = "2.1.0"

if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new(target)
puts "Use ruby #{target}+ (Your version is #{RUBY_VERSION})"
exit(1)
end

こうするとruby2.0系を使ってるとbundleが実行されず、2.1以降だとbundleが通る。


2.0系

$ rbenv global 2.0.0-p594

$ bundle install
Use ruby 2.1.0+ (Your version is 2.0.0)


2.1系

$ rbenv global 2.1.4

$ bundle install
...
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

$ rbenv global 2.1.5
$ bundle install
...
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.


いい感じ。