Rails 4资产管道不会使用asset_path引用其他资产来覆盖资产
因此,资产管道摘要存在一个小问题,即我们有许多HTML模板作为资产(对于AngularJS),我们使用asset_path
帮助程序在Javascript文件中引用这些资产的路径。 不幸的是,由于资产预编译步骤(和Heroku)检查更改的方式,对模板进行更改不会导致重新编译javascript文件。
所以基本上在像application.coffee.erb
这样的文件中我们可能有类似的东西:
url = ''
当我们运行rake assets:precompile
会变成/assets/views/template-1023911231.html
,它具有摘要值但是如果template.html.slim
被更改,摘要将会改变,但是因为application.coffee.erb
没有从根本上改变了它没有重新编译,并继续指向旧的摘要。
思考? 解决方案? 这实际上对我来说似乎是个错误。
更新
目前我最好的解决方案是在application.rb中更新资产版本,如果我们需要更改我们的HTML模板资产但没有更改javascript。
这里提出了一个解决方案,它涉及使用depend_on
或depend_on_asset
指令。 在我的情况下,将此添加到.js.erb
文件中:
//= depend_on_asset views/template.html url = '<%= asset_path('views/template.html') %>'
每次根据需要更改views/template.html
,这将重新编译此文件。
您是否尝试过运行rake assets:clean
然后rake assets:precompile
以重新编译?
更新不确定这是否与您面临的问题相同但听起来确实相似。 在github上看看这个Heroku问题 。
如果它是相同的(或类似的),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/
最好根据自己的情况修改上述内容。