Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails production static files routing error

When I run my app locally in test/dev my views come up nicely and everything is happy. When I try to navigate to those same erb files running on my remote server/local production server I get errors like the following:

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css")

I've seen similar questions here on SO but none have been able to solve my problem. The closest thing I've found to an answer is the first answer here: Rails 404 error for Stylesheet or JavaScript files

As I understand it the best thing to do would be to configure my webserver to serve static files. How do I do this locally/on Heroku?

Update

As per raidfive's suggestion I changed config.serve_static_assets from false to true and this fixed my issue. However, I see that it says in production.rb that Apache or nginx should already be serving static assets. Is it any less good/professional to serve static assets in this way and if so how would I achieve the desired results if I'm using Heroku?

Update 2

Apparently Heroku does this automatically, I had an extra comma that was causing the mischief. I was able to look in the extended Heroku logs using the following tip to track down the trouble. Thanks SO!

like image 947
keybored Avatar asked Feb 08 '11 00:02

keybored


2 Answers

Are you using Rails 3? By default Rails 3 / webrick does not serve static files in production mode. You can easily enable this by setting

config.serve_static_assets to true in your production.rb file.

like image 200
raidfive Avatar answered Sep 19 '22 19:09

raidfive


In Rails5, you should comment

"config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?" 

in config/enviroment/production.rb

like image 32
s8186255 Avatar answered Sep 17 '22 19:09

s8186255