在推送到Heroku之前,是否可以在Rails应用程序中自动预编译我的资产?我总是忘记这样做,所以当我输入git push heroku master
时,它首先会运行rake assets:precompile ; git commit add . ; git commit -a -m "Precompile."
,或类似的东西会很好。
有没有人实现过这样的解决方案?可能没有钩子?虽然我怀疑这是唯一的方法。
答案 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仓库中提取更改,预编译资产,提交并推回。