gemとは
gemとはrubyのライブラリ
のことです。
一応railsのライブラリにもなりますが、railsはもともとrubyのライブラリの
1つであるため、正しくはrubyのライブラリであるという認識が必要です。
bundlerとは
gemを管理する
ものです。
例えばbundlerを使うと以下のようなメリットがあります。
1.bundlerを使ってgemをインストールするとgem同士の互換性を保ってくれるので、
gemを追加したり時間が経ってもエラーを起こさず開発できる
(補足)例えばAというgemがあって、Aを使うにはBというgemを使う必要がある、
そのgemを使うにはCというgemを….となっている時、
AはBに依存しており、BはCに依存しているということになります。
2.Gemfileという1つのファイルにgemを書くのでgemの管理がしやすい
3.Gemfileを使ってアプリごとにgemを管理できる
4.環境ごとにインストールするgemを管理できる。
bundlerでよくあるエラー
よくある原因はgem同士のバージョンがあっていない可能性があります。
なのでもしbundle installコマンドでエラーが発生した際にはまず始めに
gem file
の中を確認することがポイントです。
また、Gemfile.lockを削除することで解決する場合もあります。
Ruby on Railsのファイルの中にあるGemfile.lock
というファイルではGemの
バージョン指定が管理されています。
なので、Gemfile.lockのファイルを削除してからもう一度bundle install
をして
みましょう。
※ちなみにGemfile.lockはbundle installした後の結果を記したものです。
削除し再度インストールを実行することで、また作成されますのでご安心を。
まとめ
gemとはrubyのライブラリであり、たくさんのプログラムをまとめたものになります。
そしてそのライブラリの種類やバージョン管理を行っているのがbundlerです。
MacOSで例えるとHomebrewやiphoneで例えるとApp storeがrubyにおける
bundlerになるイメージです。
何気なく使用しているbundle installコマンドはbundlerで管理されたライブラリを
gemfileの中から見つけインストールするためのコマンドであるということが分かりました。