Ruby
bundler

bundlerでの運用方法

More than 1 year has passed since last update.

とりあえず現時点での理解をまとめてみた。


まとめ


  • Gemfile.lockはバージョン管理しよう

  • デプロイするときは--deploymentオプションを使おう


GemfileとGemfile.lock


Gemfile

何をインストールするべきか記述する。

開発時に参照されるファイル


Gemfile.lock

何がインストールされたか、どのような依存関係があったかが記述される。

デプロイ時に参照されるファイル。


コマンド: bundle install


開発環境


開発環境

$ bundle install #--path vendor/bundle


必要なら--pathを指定して、特定のディレクトリにgemをインストールさせる。

bundle install時に生成されたGemfile.lockは、デプロイ時に利用するので必ずバージョン管理する。


デプロイ時

参考: http://gembundler.com/man/bundle-install.1.html#DEPLOYMENT-MODE


本番環境

$ bundle install --deployment


bundle install --deploymentすると、vendor/bundle以下にgemがインストールされる。

また、.bundle/configにBUNDLE_FROZEN="1"が追加される。

--deploymentオプションをつけた場合は、Gemfile.lockを元にgemがインストールされる。

--deployment付きで実行された環境で、Gemfileを書き換えて新たにgemをインストールすることはできない。


コマンド: bundle update

bundle updateはGemfile.lockの記述を無視して、GemfileでのGemの指定やそのバージョン指定などに基づいて、gemを更新する。

更新時にGemfile.lockを更新する。

--deploymentを利用している場合、開発時にしか使わない。