bundle install Gemfileに書かれたgemパッケージをインストール
ざっくりいうと、Rails のアプリごとに gem パッケージを管理するツールのようです。 つまりは、システム全体で持っている gem とは別に、Rails アプリが独自の gem を持つことになるので、 今回のようにgem パッケージをインストールしたはずなのに Rails の中では使えないという事が起こり得ます。
pathを指定しないと問題が起きる可能性があるのは、かなり特殊な条件下に限られる(100人いたら100人全員が遭遇するような問題ではない)。
bundle config set path 'vendor/bundle' bundle config set without 'test development'
Bundler3からは以下のコマンドで設定した後に、bundle installしたらOKです。 bundle config set without development test
環境別にgemを管理する $ bundle install --path vendor/bundle --without development test
バンドルされた gem の中から古くなったものを判別してくれる これの便利な所は、Bundler がダウンロードしてインストールする gem を表示するが、実際には実行しないことだ。 これにより gem のリストを調査し、アップデートしたい gem を選択する自由が与えられる。
$ bundle install --path vendor/bundle Bundlerによってインストールするgemをデフォルト($BUNDLE_PATHまたは$GEM_HOME)のディレクトリ以外にする。 一度指定するとBundlerがそのディレクトリを覚えてくれるため、次回以降は指定不要。
Rails について調べてると、bunle execをつける場合とつけない場合の両方の情報が見つかります。なぜかというと、 環境によってどちらを使うべきか変わってくるから です。 今回のように、パスを指定して gem をインストールした場合、 bundle execをつけることで指定したパスの配下にある gem を使って実行します。
Gemfile.lockの記述を無視して、GemfileでのGemの指定やそのバージョン指定などに基づいて、gemを更新する。 更新時にGemfile.lockを更新する。
bundle updateを実行すると、Bundlerは、gemfileを元にgemのインストールを行います。その後、gemfile.lockを更新します。
設定したBundlerの項目は、bundle configで確認することができます。
bundle cleanup というコマンドを打つとローカルのbundle install先の使われていないGemを綺麗に削除してくれるそうな...
バッチファイルからバッチファイルを呼び出すと呼び出し先のバッチファイルが終了したところで処理全体が停止するのが仕様である。対処法としてはバッチファイル形式の処理実行前にcallをつければ良い。 call bundle -v
gemのrequire前に以下のコードを追加します。 require 'bundler' Bundler.require
bundlerで指定したgemを使う(プログラム内で指定) require 'bundler/setup'
bundler自体もGemなので、Bundlerだけはグローバルにインストールします。 $ gem install bundler