I’m having a real tough time diagnosing a 500 error from my application running in production. I’ve had it working before, but after re-deploying via Capastrano I am unable to get it going.
Here are the facts:
- The server is setup with nginx + passenger, and I’m using
PostgreSQL. - Static assets are working properly, as in I’m able to access them just fine in a browser.
- I can access the rails console via
RAILS_ENV=production bundle exec rails consoleand perform Active Record actions (like
retrieving data from the db). - Within console, I can run
app.get("/"), which returns a 500 error as well (after first showing the query that was run to load
the model). - The production.log file is never written to. I’ve set permissions 777 on it just for the hell of it. I’ve also set the log level to
:debug with nothing to show for it. - The nginx log (which passenger also uses) shows no indication of errors, it just notifies about cache misses.
Because nothing of use is being logged, I have no idea what to do here. I’ve tried setting full permission on the entire app directory with no help. Restarted the server multiple times, nothing. The database is there and rails can clearly communicate with it. I’m not sure what I did to get it to run the first time around. I just don’t know why rails isn’t outputting anything to the log.
Okay, I figured this out. The app ran fine in development mode, so I knew something production-specific was screwing it up. I went into config/environments/production.rb and changes these settings:
And then after restarting passenger, rails showed me the error w/ stacktrace. Turns out I was forgetting to precompile the asset pipeline!