完全なる凡ミスが原因なのですが、何故か rake task のみで起きる NameError があったので、レポートします。
現象
現象をまとめると
- 開発環境、本番環境共に
rails s
や、rails c
ではp ModelName
でModelName(id: integer,...)
と出力される - だけど、本番環境だけ
rake task
からそのモデルを直接さわろうとするとNameError: uninitialized constant ModelName
で怒られる。 - 開発環境では
rake task
を実行してもエラーにならない。
原因
原因は model_name.rb
が本番環境と、git 上では Model_name.rb
で保存されていたこと。
そう。多分間違えてファイルを作成したが、Mac はデフォルトでは大文字・小文字の区別が無いため、手元の開発環境では直ってるのに、gitに記録されず、かつ今までrake task
からそのモデルを呼び出すことが無かったために気が付かなかった。という問題。
多分開発環境でこの修正やったの1年ぐらい前…
ちなみに普通にファイル名を変更しようと思っても怒られる
➜ git mv app/models/Model_name.rb app/models/model_name.rb
fatal: destination exists, source=app/models/Model_name.rb, destination=app/models/mode_name.rb
しかたがないので、一度関係ない名前に変更して、もとに戻す作業が必要でした
➜ git mv app/models/Model_name.rb app/models/FUUUUUUUUUUUCK.rb
➜ git mv app/models/FUUUUUUUUUUUCK.rb app/models/model_name.rb
今日はこれに2時間ぐらい悩まされた…辛い…
ちなみにこのミスしたのも俺…
よけいに辛い…