ちょいちょい引っかかってくるRails4.2とRails5の違い
Rails Tutorialを始めた頃、私は自分の使っているRailsが4.2なのを知らずに勉強を進めていました。 サーバーをPumaに変えるってあたりで初めて気づいたのですが・・・ そこで思い切ってRails5にアップグレードしました。 作ってる途中でこんなことするのはもちろん初めてだったので、後遺症がちょいちょい出て困ってます。
今回の概要
10章のbeforeフィルターのテストでNo route machesになった。
対処
beforeフィルターのテストをusers_controller_test.rbに書くのですが、
ここのclassがclass UsersControllerTest < ActionController::TestCase
のままだったせいで、
get edit_user_path
とpatch user_path
がそんなルーティング設定されてないと怒られてしまいました。
ルーティングの方だということで確認したのですが、間違いなく設定はされていました。
users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy
全然わからなかったので、とりあえず教材のコードとめっちゃ見比べました。
コピペだから間違ってるはずないのに・・・と思いながら(笑)
そしてとうとうこの間違いに気づいたのですね!
classをclass UsersControllerTest < ActionDispatch::IntegrationTest
に直したら無事成功!
とはいかず・・・
今度はコントローラを作成した際に最初から書かれている
test "should get new" do get :new assert_response :success end
が引っかかりました。
第5章まで遡って
get :new
をget signup_path
に変更。
なぜ私がこの部分を変えていなかったのかは不明ですが・・・
とりあえずこれでAll Greenになりました。
まとめ
何かをアップデートする際はきちんと仕様変更された部分を確認しましょう。
それ普通か・・・