Rails3.2.9でオートテスト+初期コマンド諸々まとめ

上記エントリの情報がとても古くて、
Rails4がリリースされた今となっては改めて更新する必要も無いかな、
と思っていたのですが。

$ gem install rails

でインストールされるバージョンが 3.2.9 だったので、
とりあえずRails4は見送る方向にしました。

しました、はいいのですが、いろいろ事情が変わりすぎてて動かん。
ので、さっくりまとめてしまおうと思います。

まずはテスト環境(改)の構築

おもむろにGemfile:

# mode: ruby
source 'https://rubygems.org'

gem 'rails', '3.2.9'
gem 'bootstrap-sass'
gem 'bootswatch-rails'
gem 'jquery-rails'
gem 'thin'
gem 'haml-rails'

group :development, :test do
  gem 'spork'
  gem 'rspec-rails'
  gem 'guard-spork'
  gem 'guard-rspec'
  gem 'capybara'
  gem 'capybara-webkit'
  gem 'factory_girl_rails'
  gem 'headless'
  gem 'database_cleaner'
  gem 'sqlite3'
  gem 'rails3-generators'
  gem 'therubyracer'
  gem 'less-rails'
  gem 'rb-inotify'
end

group :development do
  gem 'twitter-bootstrap-rails'
end

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

いろいろ入っちゃってますがお好みで削除なりしてくだしあ。
例によって bundle install して、次にやることがテスト環境の構築。
といっても、

こっちとほとんど変わりません。

---- 2012-11-28: 追記 ----
CapybaraのDSL設定を忘れていたので適当に追加。
spec/spec_helper.rb:

Spork.prefork do
  # ...
  require 'rspec/rails'
  require 'rspec/autorun'
  require "factory_girl_rails"      # 追記
  require "capybara/rspec"          # 追記
  include Capybara::DSL             # 追記
  # ...

---- 追記終わり ----

Guardが大幅にバージョンアップしていたので、そこだけ修正です。*1
まずはGuardfileの以下の部分をちょいと修正します:

guard 'rspec', :version => 2, :cli => '--drb' do # 古い方。
guard "rspec", :cli => "--drb" do                # 新しい方。

「もうRSpec2にしか対応しねーから!!」という方針を固めたようで、
実際は「:version引数はdeprecatedだよ」という警告が出るだけなんですが、なんとなく。

次に、こんな感じのエラーを吐かれた人のために。

Starting Spork for Test::Unit & RSpec
Couldn't find a supported test framework that begins with 'testunit'

Supported test frameworks:
( ) Cucumber
(*) RSpec

Legend: ( ) - not detected in project (*) - detected
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
Spork is ready and listening on 8989!
--> ERROR: Could not start Spork server for Test::Unit & RSpec. Make sure you can use it manually first.
Guard::RSpec is running, with RSpec 2!
Running all specs

これはどうやら ./test/ ディレクトリが存在すると起こるエラーのようで、
単純に

$ rm -r ./test/

としてやると正常に動いてくれました。

次に叩くコマンド(完全に自分用)メモ

あとはTwitterBootstrap用の2行だけだけど。

$ rails g bootstrap:install
$ rails g bootstrap:layout application [fluid]

$ rake RAILS_ENV=test db:migrate

*1:Emacsにまで通知するようになってたんだけど、どうやってんのあれ……server?