Search code examples
rubyruby-on-rails-3asset-pipelinethin

Running thin server in production mode isn't loading my assets


When I load thin like so:

thin start -e production

and try to access one of my pages, I get this in the log output:

cache: [GET /] miss
cache: [GET /assets/main-bd1ef4b153740fb69fd615304b87ad0d.css] miss
cache: [GET /assets/jqModal-8fa734bf4f58524b2799abd73ab7d34f.css] miss
cache: [GET /assets/jquery-544665ba1d5b4f793290421aafed85c9.js] miss
cache: [GET /assets/application-00b97aa2429046c0c43802f07b756b46.js] miss

These files exist in my assets directory under public.

I've run this command also:

RALS_ENV=production rake assets:precompile

I've tried just accessing the file /public/assets/application.js in the browser like this:

http://localhost:3000/application.js

Which gives me a 404 error (even though the file exists in /public/assets but the file can be read when I make a request to the file when the server is in development mode.

Anyone have any ideas?


Solution

  • Rails serving static files is turned off in production (config/environments/production.rb) by default:

    # Disable Rails's static asset server (Apache or nginx will already do this)
    config.serve_static_assets = false
    

    The Thin server is not configured to serve the static assets, and so requests to your assets are failing.