因此,资产管道摘要存在一个小问题,因为我们有许多HTML模板作为资产(对于AngularJS),我们在带有asset_path
帮助器的Javascript文件中引用这些资产的路径。不幸的是,由于资产预编译步骤(和Heroku)检查更改的方式,对模板进行更改不会导致重新编译javascript文件。
所以基本上在像application.coffee.erb
这样的文件中,我们可能有类似的东西:
url = '<%= asset_path('views/template.html') %>'
当我们运行rake assets:precompile
时会转换为/assets/views/template-1023911231.html
,其中包含摘要值,但如果template.html.slim
发生更改,则摘要会发生变化,但由于application.coffee.erb
没有从根本上改变改变它没有重新编译,继续指向旧的摘要。
思考?解决方案?这实际上对我来说似乎是个错误。
更新
目前我最好的解决方案是在application.rb中更新资产版本,如果我们需要更改HTML模板资产但没有更改javascript。
答案 0 :(得分:5)
解决方案是suggested here,涉及使用depend_on
或depend_on_asset
指令。在我的情况下,将其添加到.js.erb
文件中:
//= depend_on_asset views/template.html
url = '<%= asset_path('views/template.html') %>'
只要根据需要更改views/template.html
,这将重新编译此文件。
答案 1 :(得分:2)
您是否尝试过rake assets:clean
然后rake assets:precompile
重新编译?
<强>更新强> 不确定这是否与您面临的问题相同,但听起来确实相似。看一下这个Heroku issue on github。
如果它是相同的(或类似的),Schneems提到它需要对资产文件进行3次更改,以便链接器清除文件。
建议的步骤是运行以下4次并比较输出:
echo "body {background-color: red}">> app/assets/stylesheets/application.css
git add .; git commit -m "assets changed 1"
git push heroku master
heroku run ls public/assets | awk /application/
最好根据自己的情况修改上述内容。