在推送到Heroku之前自动预编译资产

时间:2011-11-25 20:25:38

标签: ruby-on-rails ruby heroku rake

在推送到Heroku之前,是否可以在Rails应用程序中自动预编译我的资产?我总是忘记这样做,所以当我输入git push heroku master时,它首先会运行rake assets:precompile ; git commit add . ; git commit -a -m "Precompile.",或类似的东西会很好。

有没有人实现过这样的解决方案?可能没有钩子?虽然我怀疑这是唯一的方法。

5 个答案:

答案 0 :(得分:15)

我终于弄明白了。我确实在Cedar堆栈上。问题是我已经将我的public目录检查到了Git中,当我推送到Heroku时,它意识到public存在,因此假设我已经预编译了。运行git rm -r public并将public/**添加到.gitignore,然后推送,修复问题。

答案 1 :(得分:8)

听起来你可能不在Heroku's Cedar Stack?如果您正在使用资产管道(Rails -v> = 3.1),则雪松提供three options来编译资产。

来自docs

  

如果您尚未在本地编译资产,我们将尝试运行   slug编译期间的assets:precompile任务。

答案 2 :(得分:3)

您可以随时在bash个人资料中为heroku或类似rake assets:precompile ; git commit add . ; git commit -a -m "Precompile." ; git push heroku master的内容添加别名 即

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

答案 3 :(得分:1)

在雪松堆栈上,它将在slug编译期间执行此操作。我推荐。

答案 4 :(得分:1)

我创建了一个以守护进程运行的gem,并自动从Git仓库中提取更改,预编译资产,提交并推回。

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