はじめに
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の仕組みを図解形式で徹底解説