0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel】development環境で問題ないアプリがproduction環境で全く動かない事象に遭遇した

Last updated at Posted at 2024-11-02

ことの始まり

ポートフォリオMATRIXFLOWを作成している最中に事は起こりました。

※ MATRIXFLOWについてはこちらをご覧ください↓

一度、production環境(Heroku)にデプロイして問題ないことを確認したポートフォリオが機能追加後に再度pushすると画面真っ白になり何も動かず。

ことの詳細

次のような流れでした。

⑤でdevelopment環境で問題なく動いていることを確認したのに、
⑥のproduction環境で動作確認の段階で全く動かなくなり、
一旦問題なく動いていたところのcommitまで遡った内容をpushし直し、
デバックに着手しました。

※deploy内容はcommit単位で指定できます↓

バグの原因

バグの原因は、
development環境とproduction環境でauto loaderの仕様が異なることが原因でした。

上記の通り、④の機能を実装したときにエラーが起きたので
④の機能部分のコードが原因でした。

  • クラスChecklistを作成していた
  • ルーティングの部分でクラス指定をCheckListとしていた
    上記のような不整合があったままでした。
    開発環境のauto loaderの仕様ではエラーなく読み込まれるのですが、
    本番環境のauto loaderの仕様が開発環境と異なるためにちゃんとエラーとして認識されるためでした。
    (Ruby on Railsだとこの類のクラス名不整合は赤画面ですぐエラー吐き出し等されるのでLaravelもされるものだと思っていた。。)

本番環境のHerokuでLaravelのエラーが出力されるように設定し
確認すると下記のようなエラーが発生しており、
クラス指定の不整合を修正して解決しました。

2024-10-29T14:28:36.494311+00:00 app[web.1]: [29-Oct-2024 14:28:36 UTC] [2024-10-29 14:28:36] production.ERROR: Class "App\Models\Checklist" not found {"userId":6,"exception":"[object] (Error(code: 0): Class \"App\\Models\\Checklist\" not found at /app/app/Http/Controllers/ChecklistController.php:25)
2024-10-29T14:28:36.494330+00:00 app[web.1]: [stacktrace]
2024-10-29T14:28:36.494397+00:00 app[web.1]: #0 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(46): App\\Http\\Controllers\\ChecklistController->store()
2024-10-29T14:28:36.494477+00:00 app[web.1]: #1 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch()
2024-10-29T14:28:36.494551+00:00 app[web.1]: #2 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(208): Illuminate\\Routing\\Route->runController()
2024-10-29T14:28:36.494620+00:00 app[web.1]: #3 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
2024-10-29T14:28:36.494705+00:00 app[web.1]: #4 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
2024-10-29T14:28:36.494778+00:00 app[web.1]: #5 /app/app/Http/Middleware/ForceHttps.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()

参考

開発環境と本番環境でauto loaderの仕様が違うことは公式ドキュメントの下記部分に記載されていました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?