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 になった。

エラーメッセージから修正箇所が想像しづらく、手間取ってしまった。

[

The RSpec Book (Professional Ruby Series)
The RSpec Book (Professional Ruby Series)

](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件) を見る