カテゴリー:
Rails
タグ:
 bundler gem

このエントリーをはてなブックマークに追加
更新日時:
2012年12月11日(火)
作成日時:
2012年12月11日(火)

前の記事 / 次の記事

pathを指定してbundle installすると何がいいのか?

gemがシステムにインストールされずに
アプリケーションごとに指定したpathにインストールされるので、

複数のアプリや複数のRailsが一つのシステムに同居してる場合、
意味不明な相性問題に悩まされにくくなる、ような気がする。

気がするだけで実際そこまで変わるかというと微妙だけど、
他のアプリやRailsと共有してないから、意味不明な事態になったら
とりあえず全てのgemを削除してみるとか気軽に出来て気分的に楽。

やり方

$ bundle install --path vendor/bundle  # vendor/bundle である必要は無い

徹底するなら

普通にRails new appnameするとその時はまだvendor/bundleが存在してないので、
システムのRailsを読みに行ってしまう、ので徹底的にアプリ毎にgemを管理するなら、
Rails自体をbundlerでインストールするところから始める。

【参考サイト】
bundle installするときはpathを指定しよう

1st. Railsだけを書いたGemfileを用意する

手動でアプリをインストールするディレクトリをつくって

$ mkdir appname
$ cd appname

手動でGemfileを作成して

$ vi Gemfile

source "http://rubygems.org"
gem "rails", "3.2.9"

path に bundle installする

$ bundle install --path vendor/bundle

2nd. Railsプロジェクトを生成する

今インストールしたRailsを使ってプロジェクトを生成する

$ bundle exec rails new .

Gemfileを上書きするか聞かれるので、デフォルトのままでいいなら上書きする。
カスタマイズする場合はGemfileを編集

$ vi Gemfile

source "http://rubygems.org"
gem "rails", "3.2.9"

gem sqlite3

gem sass
gem haml

とか。で、bundle install

$ bundle install --path vendor/bundle

ちなみに"--path vendor/bundle"は一度実行すると、".bundle/config"に自動的に設定が入るので、
次回以降は"--path vendor/bundle"を指定しなくても自動的に指定したpathにインストールされる。

$ vi .bundle/config

BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'