Friday, January 20, 2012

Rails 3.2 on Heroku asset:precompile issue

I just upgraded www.checkthesock.com to Rails 3.2 and found that the asset precompile step of the release was not working properly.

Here is the output I was getting:

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       could not connect to server: Connection refused
       Is the server running on host "127.0.0.1" and accepting
       TCP/IP connections on port 5432?
       
       Tasks: TOP => environment
       (See full trace by running task with --trace)
       Precompiling assets failed, enabling runtime asset compilation
       Injecting rails31_enable_runtime_asset_compilation

The issue was rails was trying to connect to the database during the precompile process, and heroku is setup not to allow that. I am guessing that this issue is due to a change in the rails initialization setup in rails 3.2.

It turns out that the fix for this is very simple as long as you don't actually need to connect to the database during asset precompiling. All you need to do is add the following line to 'config/application.rb'

config.assets.initialize_on_precompile = false

Additional Resources

4 comments:

Philippe said...

Awesome, thank you!

Mark Essel said...

Thanks Nathan, just updating an old mostly unloved app, and ran into this problem.

If you're curious it's http://imagebrowser.herokuapp.com and it was created along with friend Tyler Gillies a web hacking life time ago (2009)

Don't do any rubying for my dayjob (nodejs, a bunch of c++ modules)

jshou said...

This helped, thanks!

Bruno Sapienza said...

Thank you so much!