この記事について
この記事は、筆者がRuby on Railsを学習・使用する中で疑問に思ったbundle
コマンドについて、どういった意味があるのかという内容をまとめていきます。
まだまだ初学者ではあるので、なにか間違った理解等ございましたらぜひご指摘いただけますと幸いです。
bundlerとは
プロジェクト内で使用するgemのパッケージ管理ツール。
gemのバージョンやgemの依存関係を管理してくれる「gem」
bundlerの特徴
- bundlerを使ってgemをインストールすると、gem同士の互換性を保ってくれる。
- Gemfileという1つのファイルにgemを書くので、gemの管理がしやすい
- Gemfileを使ってアプリごとにgemを管理できる
- 環境ごとにインストールするgemを管理できる
- gemの互換性を保ってくれる。Gemfileさえ共有すれば複数人での開発でもエラーを起こさない
参考
https://pikawaka.com/rails/bundler
つまりgemを複数使っている場合に発生するgem同士の依存関係を、ひとまとめに管理してくれる便利なgemという理解で問題はないっぽい。
gemとは
gemとはrubyのライブラリのこと。
gemはRubyGemsと呼ばれるRuby用のパッケージ管理システムで管理されており、RubyGemsが提供するgemコマンドを通じてインストール等ができる。
パッケージ管理システムは各言語ごとに用意されている。
Python → pip
Java → maven
node.js → npm
Gemfileとは
railsアプリで利用するgemの一覧を整理(記述)するファイル。
bundle install
コマンドが実行されると、このGemfileに記載されているgemの一覧を参照し、まだインストールされていないgemがあればインストールを実行してくれる。
Gemfile.lockとは
Gemfileをもとに実際にインストールされたgemの一覧とバージョンが記載されたファイル。
Gemfile.lockには依存関係にあるgemも含め、bundlerによってインストールされたすべてのgemとそのgemのバージョンが記載されている。
Gemfileをもとに、bundlerによってインストールされたgemの結果が出力されるファイル。
そのため、Gemfile.lockを手動で更新することはない。
bundle install
やbundle update
を実行することで自動更新される。
まとめ
gem
rubyのライブラリ(便利機能ツール)
Gemfile
Ruby on Railsアプリで使用するgemを記述してまとめたもの
Gemfile.lock
bundle installなどによって、実際にインストールされたgemの結果が出力されるファイル
参考
https://qiita.com/nishina555/items/1b343d368c5ecec6aecf
https://nishinatoshiharu.com/difference-gemfile-gemfilelock/
https://qiita.com/kamohicokamo/items/ded4cad5be1778547640