groooovin'

ログという名の溝を彫ります

『実践Ruby on Rails 4』① Chapter9

2017-06-18 『実践Ruby on Rails 4』を実施中。

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

Chapter9authenticator_spec.rbを書くところでかなり詰まったので、その時の対応などを記録する。

uninitialized constant Authenticator (NameError)

一旦authenticator関連のファイルを全て書き終えたので、rspecを実行する。 が、rspecを実行しても、以下のエラーが出てしまう。
uninitialized constant Authenticator (NameError)

ググってすぐに見つかったのが、specファイルのrequire spec_helperrequire rails_helperに書き換えるという内容のものだった。 書き換えて試してみたが、エラーの内容は変わらない。 更にググっていったら以下の記事を発見した。
RSpec/Rails: uninitialized constant が出たら bin/spring stop を実行してみると吉
このアプリケーションでもspringを使っているので、もしやと思って記事に書いてある、以下のコマンドを実行したらすぐに解決することができた。
bin/spring stop

ちなみにこのブログは『実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング』の著者のブログらしい。問題を認識して解決策を出していてくれて助かった。

undefined method build'

で、やっと先にすすめるかと思ったら、また違うエラーが発生。。。
undefined method build'
buildがどこにも定義されていないとのこと。 ググってみたら、buildといのは元々FactoryGirlが提供しているメソッドらしい。一般的にspec_helperに書いて読み込んでおくもの。で、本にもそのように書いてあったので、spec_helperには読み込んでいたが、バージョンの問題などでspecファイルに読み込むのは、上にも書いたとおりrails_helperである。なので、spec_helperに記載されているFactoryGirl関連っぽいコードをrails_helperに移動させてrspecを実行したら、エラーはなくなった。

大量の警告

がしかし、今度は大量の警告。。。しかもそれぞれ内容が違う。。。が、テスト自体は実施できているっぽい。これもググってみたら、まずはこの記事を発見。
2重に require すると以下が出る
二重にrequireしているようなコードがあったので、削除したら確かに大量の警告は消えた。

しかし本当に不要なのかが現時点では不透明なため、もう少しググる。 今度は、Rspecのバージョンが新しいと大量の警告が出てくる旨の記事を発見。
RSpecを実行するとWarningがたくさん出る場合
.rspec内の-waringsというコードを削除するという内容で、無事大量の警告が表示されなくなり、テストも通ったので、今回はこちらの解決策を採用することにした。

元々もっと早く進める予定だったのに、結構つまずいていて辛い。。。