こんにちは。たなか(@tanaka_ricecake)です。
Rails tutorialを進行中です。
作業中に躓いたエラー内容が溜まってきたのでまとめました。
もくじ
ActiveRecord::PendingMigrationError
Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development
Railsさんは以下のように仰っています。
bin/rails db:migrate を走らせた方が良いよ
rails g modelなどでマイグレーションファイルが増えたものの、DBに反映されてないことが考えられるので、アドバイス通りdb:migrateを実行してみましょう。
Unknown action
routes.rbを設定したものの、対応するアクションがcontrollerに書かれていない場合などに表示されるエラーです。
実施したいアクションが、コントローラーに記述されているか、そこにタイポがないかを確認してみましょう。
Template is missing
route、controllerまで疎通したけど、対応するテンプレート(ビュー)がないってエラーですね。
例えば一覧ページをみたくてindexアクションを通過している場合は、該当のディレクトリにindex.html.erbがあるか、またタイポはないかを確認してみましょう。
こういったエラーの場合は逆に、「ルーティング、コントローラーまでには疎通してるから、あとはビューだけだな」みたいな確認にも使えたりしますね。
SyntaxError
シンプルに構文エラーです。どこか書き方を間違えています。
大抵ログでどこがおかしいか教えてくれるので、「xxx_controller.rbのxx行目ね」みたいに該当箇所を修正してやればOKです。
NoMethodError in 〜
定義されていないメソッドが呼び出されたときに表示されます。
例えば
undefined method `title' for nil:NilClass
こんな風に怒られている場合、@hoge.title のような形で呼び出そうとしているけど、titleなんて言われてもわからないよ、といった旨のエラーになります。
@hogeがnilになっている、titleなんてものがどこにも定義されていない、その辺りでタイポしているなどが原因として考えられます。
まずはbyebugなどで@hogeについて調べてみるなどしましょう。
このページは動作していません
rails sでサーバーを起動しましょう。
サーバーを起動してなおこの症状という方は、指定している接続先が異なる可能性があります。
localhost:〇〇 ← ここのポート番号を確認するなどすると解決の近道です。
railsのエラーというわけではありませんが、初学者一度はやるのではないでしょうか。
まとめ
今回はRuby on Rails初学者が一度は見ることになるであろうエラーをまとめて紹介しました。
Railsチュートリアルではbyebugなどのデバッガー操作についてサポートが手薄な印象です。
プロのデバッグについて、方法をもっと知りたいなーと思いました。
紹介したような症状でお悩みの方の参考になれば幸いです。