GemfileはBundlerでgemの依存関係を管理するために必要な設定ファイルです。
Gemfileにはgem名とバージョンをgem 'rails', '~> 6.1.5'
のようなフォーマットで記述します。
~> 6.1.5
の正確な意味わかりますか?
~>
の呼び方知ってますか?(トゥウィドルワッカと呼びます)
この記事ではGemfileのバージョン指定の書き方を解説していきます。
1. Gemfileのバージョン指定子の意味
バージョン指定 | 意味 |
---|---|
1.0 |
1.0のみ |
>= 1.0 |
1.0以上 |
~> 1.0 |
1.0以上2.0未満 |
~> 1.0.0 |
1.0.0以上1.1未満 |
指定なし | 最新版 |
~> 1.0
はマイナーバージョン(0.x.0)は上がってもいいがメジャーバージョン(x.0.0)は上げたくないことを意味する~> 1.0.0
はパッチバージョン(0.0.x)は上がってもいいがマイナーバージョン(0.x.0)は上げたくないことを意味する
# 以下二つは同じ意味 gem 'rails', '~> 6.1' gem 'rails', '>= 6.1', '< 7.0'
# 以下二つは同じ意味 gem 'rails', '~> 6.1.5' gem 'rails', '>= 6.1.5', '< 6.2'
2. twiddle wakka(トゥウィドルワッカ)とは
~>
がtwiddle wakkaです。
Gemfileのバージョン指定にはoptimistic version constraint(楽観的なバージョン指定)とpessimistic version constraint(悲観的なバージョン指定)があります。*1
- optimistic version constraint
gem 'library', '>= 2.2.0'
- pessimistic version constraint
gem 'library', '>= 2.2.0', '< 3.0'
このpessimistic version constraintの省略記法としてできたのが~>
(twiddle wakka)です。
gem 'library', '>= 2.2.0', '< 3.0'
をtwiddle wakkaを使って書くとgem 'library', '~> 2.2'
になります。
Jim Weirich氏により当初は>*
という書式で追加されたのちに、現在の~>
に変更されたみたいです。*2
~>
をなんでtwiddle wakkaと呼ぶようになったかについては、プログラマーたちの間で~
(チルダ)をtwiddleと呼び、<>
(山括弧)をwakkaと呼ぶようになったことからきてるらしいです。*3
【参考】