推送到Heroku后资产管道出现问题——Rails 3?

3
我不知道这次发生了什么不同的事情 - 我的本地环境运行得很好。我的Heroku应用程序也运行良好。我推送了一些代码,现在似乎我的Heroku应用程序中的资源管道已经断裂了?
现在 /assets/all.css 和 /assets/application.js 都产生了“未找到”错误。
有任何想法是什么导致了这个问题或者我该如何修复它吗?
明确一点 - 我的应用程序昨天工作得很好。我没有更改与资源管道相关的配置。

你是推送到竹子还是雪松堆栈了吗? - Mario Uher
在命令行上调用“heroku stack”。 - Mario Uher
有迁移到cedar堆栈的任何选项吗? asset pipeline工作需要cedar堆栈:http://devcenter.heroku.com/articles/rails31_heroku_cedar - Mario Uher
1
你昨天以后更改了任何资源吗?也许是一些样式表或者图片?那么在推送到heroku之前,你必须运行rake assets:precompile - Mario Uher
@ream88 运行 git push heroku master 实际上会执行 rake assets:precompile 以及其他所有操作。我已经将所有资产提交并推送到 Github,本地运行得非常完美,但是当推送到 Heroku 时,CSS 和 JS 引用就会出现问题。 - ATSiem
显示剩余3条评论
2个回答

1

正如ream88所说,您需要使用cedar stack才能使用Asset Pipeline。您需要使用--stack cedar选项创建一个新的heroku项目,并稍微修改您的gemfile

我在这个主题上有一篇博客文章。如果您不需要它,可以跳过compass/bootstrap的内容。


我不明白昨天它还能正常运行,这与任何事情有什么关联……我没有编辑有关资产管道的配置,那么怎么可能会有任何变化呢? - Elliot
说实话,我不知道。我很惊讶你的应用程序居然能够工作。当我开始使用3.1时,我花了半天时间尝试将其与竹堆栈配合使用,最终放弃并迁移到了雪松。 - bassneck
1
但是你修改了任何资产文件吗?因为如果你这样做了,通常在生产模式下将找不到任何资产。Rails会在文件名的末尾添加摘要,并且某些资产依赖于其他资产。最坏的情况是更改一个文件会导致更改所有资产文件名。 - Mario Uher
是的 - 我肯定修改了一些 CSS 和 JS 文件。现在这些文件都找不到了。所以如果所有资源名称都改变了,那么 <%= javascript_include_tag "application" %> 还能正常工作吗? - Elliot
1
不重新编译资产是不可能的。这就是使用cedar stack的优势,因为它会在每次部署后自动完成此任务。当然,您不需要提交public/assets中的资产。 - Mario Uher

0

供日后参考,这显然是Heroku的硬件故障,他们在第二天通过电子邮件通知了我。


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