Rails3からBundlerが導入されgemの管理がしやすくなりましたが、色々なRailsアプリでほいほいbundle installを実行するとシステムにインストールされるgemが結構カオスになってきます。また、Rails2とRails3が同居する開発環境だとかなり面倒くさくなります。精神衛生上あまり宜しくありません。
そこでbundlerにオプションを渡してgemを任意のディレクトリにインストールし、gemをRailsプロジェクト毎に管理することをオススメします。
Rails3の場合、使い方はこんな感じになります。
まず、プロジェクト用のディレクトリを作成し、Gemfileを記述します。
mkdir newapp
cd ./newapp
vim Gemfile
Gemfileにはrailsだけ指定します。
source "http://rubygems.org"
gem "rails", "3.0.1"
Gemfileを書き終わったらbundleコマンドを使いRailsをインストールします。ここではvendor/bundlerというディレクトリにgemをインストールします。
bundle install --path vendor/bundler
インストールが終わったらRailsプロジェクトを作成します。RailsがGemfileを上書きしていいか質問してくるのでyesと答えて上書きしてしまいましょう。なお、インストールするディレクトリを変えた場合、そのディレクトリにはパスが通っていないのでbundle execを通してRailsを実行する必要があります。
bundle exec rails new .
あとは上書きされたGemfileを開いて、RSpecなりhamlなり導入したいgemを書いてbundle installしましょう。
毎回bundle execなんて打つの面倒過ぎるって人は、.bashrcや.zshrcにエイリアス設定しちゃいましょう。私は下記のようにしています。
alias be="bundle exec"
こうすることで、
be rake db:migrate
be rails s
みたいな感じで使っていくことが出来ます。