Web Marina

日々の業務や勉強などで得た知識をアウトプットしていきます。

ちょいちょい引っかかってくる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_pathpatch 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 :newget signup_pathに変更。

なぜ私がこの部分を変えていなかったのかは不明ですが・・・

とりあえずこれでAll Greenになりました。

まとめ

何かをアップデートする際はきちんと仕様変更された部分を確認しましょう。

それ普通か・・・