No route matches [GET] /assets | Railsトラブルシュート


Ruby on Railsで/assetsを返せない次のエラーの原因と対策をまとめました。

ActionController::RoutingError (No route matches [GET] "/assets...

🐰 対策

Rails 5以上の場合はconfig/environments/production.rbに次の設定を追加します。

# 静的なファイルをRailsから返す
config.public_file_server.enabled = true

Rails 5未満の場合はconfig/environments/production.rbに次の設定を追加します。

🎉 エラーの原因

Rubyでassetsなどの静的なファイルを返すように設定をしていない場合にこのエラーが発生します。

config.serve_static_files = false

🐯 補足:本番はApacheやnginxで静的ファイルを返すべき

本番ではApacheやnginxで静的ファイルを返した方がRailsへの負荷を抑えて、パフォーマンスを向上できます。

🐠 補足:Herokuの場合はrails_12factorを使う

Herokuを使う場合はRubyGem「heroku/rails_12factor」をGemfileに追加するとデフォルトで設定してくれます。

😀 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)