Ruby on RailsチュートリアルのサンプルのRails 4対応作業補足

Ruby on Railsチュートリアルのサンプルアプリ sample_appのRails 4対応作業。

$ bundle exec rspec spec/models/user_spec.rb

で、エラー、

/usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper.rb:1:in `require’: cannot load such file — zip/zip (LoadError)

が出る。ググると、http://www.workabroad.jp/posts/1095 が引っかかる。selenium-webdriver gemのバージョンを新しいのに上げるといいらしい。ところで、Everyday Rails RSpecによるテスト入門では、JavaScriptを含む複雑なwebアプリ上の操作をFirefox経由で行うときに、Seleniumを使うが、Firefoxが頻繁にアップデートするため、Seleniumを使ったテストが動かなくなることが多く、selenium-webdriver gemは最新版にアップデートした方がいいとのこと。そこで、それを、2.40.0にあげたら、エラーはなくなった。テストは失敗するが。

$ bundle exec rspec spec/models/user_spec.rb

テストが失敗するが、Factoryが登録されていないと言われるので、factories.rbを規定の場所にコピー。

再度、

$ bundle exec rspec spec/models/user_spec.rb

チュートリアルによると、”protected_attributes gem (リスト12.1) の動作がRails 3.2の「アクセス可能な属性」と異なっているため、マスアサインメントのセキュリティエラーをテストするコードは4.0では動作しなくなりました。”ということなので、失敗しているテストを削除。再度、テスト。OK。

同様に、micropost、relationshipモデルのテストの失敗する部分も、削除する。

user_pages_spec.rb の修正では、

it { should have_selector(‘title’, text: ‘All users’) }

it { should have_title(‘All users’) }

などと置き換えないといけない。hav_titleメソッドで、text: を書くとダメ。

チュートリアルの、Rails 4対応の説明の通りにやると、これで全テストが通るのだけど、app/asssetsの内容をコピーすると、

undefined method `environment’ for nil:NilClass when importing Bootstrap

と言われる。ググると、http://stackoverflow.com/questions/22392862/undefined-method-environment-for-nilnilclass-when-importing-bootstrap が引っかかり、sass-railsが4.0.0だとダメということで、4.0.2に変更したら、テストが通るようになった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です