Rails に入ったとたんにはまりだしたw
まず、19章で環境のセットアップが本書と異なる。
本書は Rails 3.0.0, cucumber-rails 0.3.2 となっており、自分は Rails 3.2.11, cucumber-rails は 1.3.0 をインストールした。
そうしたところ、web_step.rbが最新の cucumber には入っていないらしい。
20章から急に駆け足になる。序盤の丁寧な説明は全くなく、サンプルコードをダウンロードして後はよろしく見てくれというスタンスっぽい。ソースコードは http://pragprog.com/titles/achbd/source_code からダウンロードできる。
おかげでいろいろハマッタのでメモしておく。
attr_accessible が必要
Rails 3.2 あたりからセキュリティ強化のため、フォームからモデルのインスタンス変数にアクセスする場合は、明示的に attr_accessible をつける必要があるらしく追加した。
model/genre.rb
`class Genre < ActiveRecord::Base
has_and_belongs_to_many :movies
attr_accessible :name
end
`
model/movie.rb
`class Movie < ActiveRecord::Base
has_and_belongs_to_many :genres
attr_accessible :title, :release_year, :genres
....
`
migrateに余計なカラムつけない
has_and_belongs_to_many にタイムスタンプは不要となったので削る
db/migrate/20130129180816_create_genres_movies.rb
TYPO。。。
意気揚々とrake cucumberするもエラー。
Scenario: Create movie in genre # features/create_movie.feature:7 Given a genre named Comedy # features/step_definitions/genre_steps.rb:9 When I create a movie Caddyshack in the Comedy genre # features/step_definitions/movie_steps.rb:9 Then Caddyshack should be in the Comedy genre # features/step_definitions/movie_steps.rb:18 undefined method `movies’ for #Genre:0x007f839de03260 (ActionView::Template::Error)
どうやら、genre.moviesでエラーになっている。TYPOしてしまってhas_and_belongs_to_many :moveis としてしまいエラーが発生していた movies に直した。
webrat じゃなくて capybara が動いていた
`Then Caddyshack should be in the Comedy genre # features/step_definitions/movie_steps.rb:18
stack level too deep (SystemStackError)
features/create_movie.feature:10:in `Then Caddyshack should be in the Comedy genre'
`
わけわからんエラーのため、movie_step.rb に save_page を入れてって確認したところ、response.should contain("1 movie") でエラーになっている模様。page.should have_content("1 movie")とすることで回避できた。
どうやら、 webrat ではなく capybara が動いていたようで書き換えが必要となった。
これで何とか green になった。
エラーメッセージから修正箇所が想像しづらく、手間取ってしまった。
[

](http://www.amazon.co.jp/exec/obidos/ASIN/4798121932/hatena-blog-22/)[The RSpec Book (Professional Ruby Series)](http://www.amazon.co.jp/exec/obidos/ASIN/4798121932/hatena-blog-22/)- 作者: David Chelimsky,Dave Astels,Zach Dennis,角谷 信太郎,豊田 祐司,株式会社クイープ- 出版社/メーカー: 翔泳社- 発売日: 2012/02/22- メディア: 大型本- 購入: 6人 クリック: 129回- この商品を含むブログ (13件) を見る