日記

のみろぐ

主に競プロ日記です

【Rails】test_helper.rb (LoadError)

起きたこと

  • Rails Tutorial 5章のラスト、herokuにデプロイする場面でバグった。
  • git push herokuをした後、ブラウザでサイトを見に行くと以下のようなエラー画面が表示される(画像張るのめんどいから文字になってる)
Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command
heroku logs --tail
  • よくわからんがとりあえずバグったっぽい

やったこと

  • herokuに表示されたエラー画面の指示通り、heroku logs --tailを見た
    • エラーが出てることはわかったが、原因まではわからなかった
  • heroku run rails consoleをした
    • heroku上でrails consoleを立ち上げるコマンド
    • 実行すると、最後の方にNo such file to load -- test_helper.rb (LoadError)というエラーが出てくる。どうやらtest_helper.rbというファイルが見つからないっぽい
    • 頑張ったら原因がわかった
    • 原因は、users_controller_test.rbというファイルを/app/controllers/内に作ってしまったことだった。本来は/test/controllers/内に置くべきファイルなのに。普通にミスった。ファイルの内容は以下の通り。このrequire 'test_helper'を実行した時に、LoadErrorが起こってたみたい。だから、app/controllers/users_controller_test.rbtest/controllers/users_controller_test.rbに移動した。
require 'test_helper'

class UsersControllerTest < ActionDispatch::IntegrationTest
  test "should get new" do
    get signup_path
    assert_response :success
  end
end

まとめ

  • herokuにデプロイしたらエラーが起きた
  • 原因はusers_controller_test.rbファイルの配置ミスだった
  • app/controllers/users_controller_test.rbtest/controllers/users_controller_test.rbに移動することで解決した。

  • でも、rails serverで動かした時はエラー起きなかったんだよなぁ。なんでだろ?わからん