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

9
有没有可能在推送到Heroku之前自动预编译Rails应用程序中的资产?我总是忘记做这件事,因此当我键入git push heroku master时,如果它能首先运行rake assets:precompile; git commit add .; git commit -a -m"Precompile."或类似操作,那将是很好的。有人实现了这样的解决方案吗?可能不需要使用钩子(hooks)吗?虽然我怀疑这是唯一的方式。
5个回答

14

我终于弄清楚了。我确实在使用Cedar堆栈。问题在于我将public目录添加到Git中,当我推送到Heroku时,它发现public已存在,因此认为我已经预编译了程序。运行git rm -r public命令并将public/**添加到我的.gitignore文件中,然后推送即可解决该问题。


8
似乎你可能不在Heroku的Cedar Stack上?如果你正在使用资产管道(Rails -v> = 3.1),cedar提供了三个选项来编译资产。
文档中得知:

如果你没有在本地编译资产,我们将尝试在slug编译期间运行   assets:precompile任务。


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'

1
如果这是您的部署过程的一部分,我建议将其作为代码库中的脚本。 - Benjamin Oakes

1

1

在红杉栈上,它会在编译slug期间执行此操作。我建议这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接