Gemはすべてプロジェクトフォルダー内に保管しましょう

 

Gemをインストールするときに使用するbundleコマンドですが、

$ bundle install

とだけ打つとgemはrubyの共通フォルダに保存されます、つまりAプロジェクトで使用したgemもBプロジェクトで使用したgemもすべて同一のgemsフォルダにごちゃ混ぜになります。

できる事ならAプロジェクトで使用するgemはAプロジェクトフォルダ以下に、Bプロジェクトで使用するgemはBプロジェクトフォルダ以下に保存したいですよね。

その時は

$ bundle install --path vendor/bundle

と–pathオプションをつけて実行しましょう。
こうする事で使用されるgemファイルはプロジェクトフォルダ以下に保存されます。

ちなみに–pathは”remembered option”の一つであり、一度指定するとその後

$ bundle install

とだけ実行しても先程指定したvendor/bundle以下に保存されます。
“remembered option”の正体は.bundle/configファイルで、ここに

BUNDLE_PATH: vendor/bundle

と記入される事で記憶されます。

 

公開用サーバに余計なGemは入れないようにしましょう

 

開発マシンは良いのですが、サーバに公開(デプロイ)する時は

$ bundle install --without test development

と指定して、開発環境やテスト環境でのみ使用する余計なGemはインストールされないようにしましょう。
このオプションがちゃんと動く為には、Gemfileに使用したいGemを追加する際、開発・テスト・公開のどの段階で使用するか考えて記入する必要があります。
例えばテストのみで使用するGemは

gem 'factory_girl_rails'

と直接書くのではなく、

group :test do
  gem 'factory_girl_rails'
end

とgroupで囲んで記入します。

 

使用しているGemのバージョンを確認するのには

 

その他よく使う機能として・・・プロジェクトで使用しているgemのバージョンを確認するのには

$ bundle list

を使用します。

gemのバージョン違いでうまく動かない時など確認のためによく使います。