27 December 2012
This issue always caught me off guard when deploying new app on Heroku. The root cause is simple,
assets:precompile requires the app's environment to be loaded. But because it runs during slug compilation, no config vars available to the app yet. That's why you'll get error like this:
could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port xxxx?
App trying to connect to database but
DATABASE_URL var not correctly set yet.
The simplest solution is to tell the app to not initialize when we are compiling the assets. Add this line:
config.assets.initialize_on_precompile = false
That should do it.
Back then we were able to use
user-env-compile feature from Heroku Labs but it is no longer available.
user-env-compile exposes your config vars during slug compilation. You can read about it here https://devcenter.heroku.com/articles/labs-user-env-compile.