#はじめに
bundlerとbundlerコマンドについて自分用にまとめておく。
・bundle install
・bundle update
#bundlerとは
・bunlerとは、gemを管理するツール。
・bunler自体もgemの一種。
・GemfileとGemfile.lockを利用して、gemを管理する。
###gemとは
・gemとはライブラリのこと。
・便利な機能をひとまとめにしたもの。
・gemをインストールすることで、自分で一からコードを書かなくても様々な機能
・gemの種類は多数ある。(ユーザー登録機能だったり、認証機能だったり)
###Gemfileとは
Gemfileは、アプリで使用するgemが記載されている。
コマンド打つことで、記載されているgemをインストールすることができる。
インストールする際は、gemのバージョンを指定することが可能で指定しなかった場合は最新のバージョンでインストールされる。
gem 'bootstrap-sass', '3.4.1'
###Gemfile.lockとは
実際にインストールされたgemが記載されている。
また、Gemfileでインストールしたgemと依存関係のあるgemも表示されている。
bootsnap (1.5.1)
msgpack (~> 1.0)
bootstrap-sass (3.4.1)
autoprefixer-rails (>= 5.2.1)
sassc (>= 2.0.0)
builder (3.2.4)
###bundlerインストール方法
ターミナルで以下コマンドを入力する。
------ % gem install bundler
以下コマンドでbundlerのバージョンを確認するとともに、
bundlerがインストールされているかも確認する。
------ % bundle -v
Bundler version 1.17.2
#bundle install
Gemfileに書かれているgemをインストールする。
Gemfile.lockにないgemをGemfileから探し、見つけたgemをinstallする。
コマンド実行後、インストールされているgemが下に表示される。
※「bundle」と省略も可能。
------ % bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms
Bundler is installing for. Bundler is installing for ruby but the dependency is
only for x86-mingw32, x86-mswin32,x64-mingw32, java. To add those platforms to
the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32
java`.
Using rake 13.0.1
Using concurrent-ruby 1.1.7
Using i18n 1.8.5
Using minitest 5.14.2
Using thread_safe 0.3.6
...
...
...
Bundle complete! 20 Gemfile dependencies, 78 gems now installed.
Gems in the group production were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
#bundle update
Gemfile.lockに書かれている内容は無視し、Gemfileに書かれているgemを全てインストールするコマンド。
実行後の挙動は、bundle installと同様。
------ % bundle update
The dependency tzinfo-data (>= 0) will be unused by any of the platforms
Bundler is installing for. Bundler is installing for ruby but the dependency is
only for x86-mingw32, x86-mswin32,x64-mingw32, java. To add those platforms to
the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32
java`.
Using rake 13.0.1
Using concurrent-ruby 1.1.7
Using i18n 1.8.5
Using minitest 5.14.2
Using thread_safe 0.3.6
...
...
...
Bundle updated!
Gems in the group production were not installed.
#bundle installとbundle updateの使い分けについて
基本的には 「bundle install」 を使った方がいいっぽい。
依存関係などでエラーが出た際に 「bundle update」 を使用してあげると良い。
本番環境で 「bundle update」 使用すると開発環境やテスト環境とgemの構成が変わり、思わぬ不具合が発生することがあるので注意が必要らいしいです。