1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby on Rails】gem, bundlerって?

Posted at

この記事について

この記事は、筆者がRuby on Railsを学習・使用する中で疑問に思ったbundle コマンドについて、どういった意味があるのかという内容をまとめていきます。

まだまだ初学者ではあるので、なにか間違った理解等ございましたらぜひご指摘いただけますと幸いです。

bundlerとは

プロジェクト内で使用するgemのパッケージ管理ツール。

gemのバージョンやgemの依存関係を管理してくれる「gem」

bundlerの特徴

  1. bundlerを使ってgemをインストールすると、gem同士の互換性を保ってくれる。
  2. Gemfileという1つのファイルにgemを書くので、gemの管理がしやすい
  3. Gemfileを使ってアプリごとにgemを管理できる
  4. 環境ごとにインストールするgemを管理できる
  5. 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 installbundle 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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?