gotagota日記

「面白きことは良きことなり」

rbenv と bundler で rails 環境構築メモ

rbenv と bundler を使って既存のruby環境汚さず rails環境を構築する際の私的メモ。

ローカルインストールしたい rails のバージョンを Gemfile に記載する

作業ディレクトリに移動した後、以下のコマンドを実行し、Gemfile を作成する。

$ cat << EOS > Gemfile  
source "https://rubygems.org"  
gem "rails", "~> 3.2.0" # ←ローカルインストールしたいRailsのバージョンを指定。指定しなければ最新版が入る。  
EOS  

railsvendor/bundle 以下にインストールする

$ bundle install --path vendor/bundle

すると

Retrying dependency api due to error (2/3): Bundler::HTTPError Network error while fetching https://bundler.rubygems.org/api/v1/dependencies?gems=bcrypt,abstract,mime-types,tlsmail,treetop,hoe,ZenTest,RubyInline,test-spec,camping,fcgi,mongrel,ruby-openid,thin,multimap,tilt,hike,text-hyphen,atomic

なんかこんなかんじのエラーメッセージを吐き腐るのだが、ググれどもググれども解決策らしきものがでてこないが、特に問題なさそうなのでいったん放置。
どなた様か原因がわかる方いらっしゃいましたらぜひご一報をば・・・。

  • --path [dir] オプションを指定して bundle install を実行すると、次回以降の bundle install 時にはディレクトリ指定をしなくてもそのディレクトリが使用される

  • オプション指定をせず、単に bundle install とすると、system または、 rbenv で指定された標準の位置にインストールされてしまうので注意

rails プロジェクトを作成する

今回は example という名前で作成。
$ bundle exec rails new example --skip-bundle
--skip-bundle を指定しないと、system環境にgemがインストールされてしまうので注意

test-unitを組み込みたくない場合は以下のオプションを指定する。
$ bundle exec rails new example --skip-bundle -T

rails をローカルインストールするために使った bundler の環境を削除する

$ rm -f Gemfile
$ rm -f Gemfile.lock
$ rm -rf .bundle
$ rm -rf vendor/bundle

rails プロジェクトの環境セットアップ

先ほど作成した rails プロジェクトディレクトリに移動した後、Gemfileを編集する。

rspec を使う場合は Gemfile に以下を記載する。

gem 'rspec'  
gem 'rspec-rails'  

Gemfile を編集後、gem群をインストールする。
$ bundle install --path vendor/bundle

その後
$ bundle exec rails g rspec:install
rspec 設定ファイルを生成する。
こうすることで、新しいコンロトーラーやモデルを生成した場合に、自動的にひな形となる spec を生成してくれるので便利。

ついでに Git の管理対象から vendor/bundle ディレクトリを外す。
$ echo '/vendor/bundle' >> .gitignore

rails が本当に起動できるかを以下のコマンドで確認すると良い
$ bundle exec rails server

参考URL

http://memo.yomukaku.net/entries/IpCSQmo
http://qiita.com/emadurandal/items/a60886152a4c99ce1017#2-7
http://blog.44uk.net/2012/07/31/rails3-rspec-try-unit-test/