Ruby on Railsで/assets
を返せない次のエラーの原因と対策をまとめました。
ActionController::RoutingError (No route matches [GET] "/assets... |
🍄 対策
Rails 5以上の場合はconfig/environments/production.rb
に次の設定を追加します。
# 静的なファイルをRailsから返す |
Rails 5未満の場合はconfig/environments/production.rb
に次の設定を追加します。
🍣 エラーの原因
Rubyでassetsなどの静的なファイルを返すように設定をしていない場合にこのエラーが発生します。
config.serve_static_files = false |
🐡 補足:本番はApacheやnginxで静的ファイルを返すべき
本番ではApacheやnginxで静的ファイルを返した方がRailsへの負荷を抑えて、パフォーマンスを向上できます。
- Apacheでの設定:ApacheでRubyOnRailsのアプリケーションを公開
- nginxでの設定:nginx + unicorn + Railsの設定方法
🎳 補足:Herokuの場合はrails_12factorを使う
Herokuを使う場合はRubyGem「heroku/rails_12factor」をGemfile
に追加するとデフォルトで設定してくれます。