I’m running my staging server locally using:
RAILS_ENV=staging rails console -p 1337
I have precompiled assets, everything is working fine except I cannot find out how to serve those assets. I have this in my staging.rb:
config.serve_static_assets = false
In my apache vhost, if I listen on 80, I can access my assets:
http://domain.local/assets/application.css
But, if I listen on 1337, the same port as my rails server, then rails spits out a 404. My confusion is, I have already told rails not to serve_static_assets, and so why would it try to serve them?
http://domain.local:1337/assets/application.css
I must be missing something. The site displays fine, just returns 404 on all assets:
ActionController::RoutingError (No route matches [GET] "/assets/application-791b26264f9bbe462a28d08cf9a79582.css"):
When you access your application through
you are not going through Apache.
If you want to run it using only WEBrick (RAILS_ENV=staging rails s -p 1337), then you should set
in your staging.rb . That will make WEBrick serve the precompiled assets when you access your application through
In order to use the precompiled assets served by Apache you should look into using Apache (or Nginx) in combination with a Ruby module such as Phusion Passenger. Then you will be able to access your app through
which will make Apache serve your assets and will forward all other requests to the module. You can read more about this here