はじめに
Railsチュートリアルを実践してgemに関してはある程度意味合いは理解したが、bundlerの必要性がわからなかったので、まとめてみました。
gemとは
Rubyのパッケージ管理システム、正式にはRubyGemsと言う
gemというパッケージを利用し複雑な機能の実装を簡単に行うことが可能になる
bundlerとは
gemの依存関係とバージョンを管理するためのツール
役割
Bundler makes sure Ruby applications run the same code on every machine.
(日本語訳: Bundlerは、Rubyアプリケーションをどのマシンでも同じコードで実行できるようにします。)
(GitHub: rubygems/bundlerより)
つまりbundlerがあることで複数人開発、チーム開発が容易になる
bundlerを使わないとどうなるのか
例えばgem install bootstrap-sassと実行したとする。(2023/4/12現在だと3.4.1が最新)
| Aさんの依存Gem環境 | Bさんの依存Gem環境 |
|---|---|
| autoprefixer-rails(5.2.1) | autoprefixer-rails(5.3.5) |
| sassc(2.2.1) | sassc(2.4.1) |
チーム開発だと必ずしも依存gemのバージョンが全員一致しているとは限らないので、上の表の様に依存しているgemのバージョンが違い、Aさんは動くけどBさんは動かないみたいな状況が起きてしまう
bundlerを使うとどうなるのか
bundle install パッケージ名で以下のようにgemがインストールされる
インストールしたgemとそのgemに依存するgemも、bundlerを経由して結びつけることによって、アプリを利用する全ての人が依存するgemも含めて同じ環境でアプリを動作させることが可能になる。
参考記事
Rubyのgemとは?概要から使い方までの解説まとめ
【Ruby】 gemの仕組みを図解形式で学ぼう
【Ruby入門】今更聞けない!Ruby bundlerとは
【Rails】 結局bundlerって何?bundlerの仕組みを図解形式で徹底解説