Mike
Mike

Reputation: 19697

Automatically precompile assets before pushing to Heroku

Is it possible to automatically precompile my assets in a Rails app before pushing out to Heroku? I always forget to do it, so it would be nice if when I typed git push heroku master, it would first run rake assets:precompile ; git commit add . ; git commit -a -m "Precompile.", or something to that effect.

Has anyone achieved such a solution? Possibly without hooks? Though I suspect that is the only way.

Upvotes: 9

Views: 8157

Answers (5)

robink
robink

Reputation: 13

I've created a gem that run as daemon and automatically pull changes from a Git repo, precompiles assets, commit and push back.

https://github.com/nectify/rails-precompile2git/

Upvotes: 1

Mike
Mike

Reputation: 19697

I finally figured this out. I was indeed on the Cedar stack. The problem was that I had checked my public directory into Git, and when I pushed to Heroku, it realized that public existed, and thus assumed I precompiled. Running git rm -r public and adding public/** to my .gitignore, then pushing, fixes the problem.

Upvotes: 14

dwhalen
dwhalen

Reputation: 1925

It sounds like you might not be on Heroku's Cedar Stack? If you're using the asset pipeline (Rails -v >= 3.1), cedar provides three options for compiling assets.

From the docs:

If you have not compiled assets locally, we will attempt to run the assets:precompile task during slug compilation.

Upvotes: 8

Jeff Dickey
Jeff Dickey

Reputation: 5034

On the cedar stack, it will do this during slug compilation. I recommend that.

Upvotes: 1

Paul Kaplan
Paul Kaplan

Reputation: 2885

You could always alias heroku or something similar to rake assets:precompile ; git commit add . ; git commit -a -m "Precompile." ; git push heroku master in your bash profile ie

#in ~/.bash_profile 
alias precompile_push='rake assets:precompile ; git commit add . ; git commit -a -m "Precompile." ; git push heroku master'

Upvotes: 3

Related Questions