2012-03-19 65 views
1

我在config/initializers中爲HAML添加了一個自定義引擎。如何防止資產在開發模式下被Rails資產管道緩存?

當我訪問http://127.0.0.1:3000/assets/page.html它成功呈現頁面。

# page.html.haml 

!!! 5 
%html{:lang => "en"} 
    %head 
    = stylesheet_link_tag 'application' 
    = javascript_include_tag 'application' 

問題是Rails似乎緩存了html資源。當我從application.js清單中添加或刪除文件時,它不更新,直到我停止Rails服務器並運行rake tmp:clear。另一種方法是觸摸application.js文件。我設置了config.assets.debug = true,因爲我更喜歡在Chrome DevTools中查看單個文件/文件夾,而不是一個大的application.js文件。

有沒有辦法在開發過程中排除某些資產被緩存?

只是重申 - 它的HTML被緩存,這是問題,訪問http://127.0.0.1:3000/assets/application.js時反映清單的更改。

回答

2

蠻力解決方案是一些depends_on屬性添加到HAML文件:

# page.html.haml 
#= depend_on application.js 
#= depend_on application.css 
!!! 5 
%html{:lang => "en"} 
    %head 
    = stylesheet_link_tag 'application' 
    = javascript_include_tag 'application' 

這應該迫使資產進行再生時application.js文件被改變。

有幾個這樣的警告。文件名應該是源碼樹中的名稱。它假設你可以在你的HAML渲染器中使用#作爲評論(我不知道HAML,所以我不確定)。我也不確定這是如何與定製引擎一起工作的。此外,更好的解決方案是讓您的自定義HAML引擎本身跟蹤依賴關係,但我不知道如何執行此操作。

查看sprockets docs瞭解更多詳情

+0

輝煌!我實際上之前嘗試過,因爲我使用了'// depend_on',所以它不起作用。我剛剛意識到HAML註釋語法是' - #'和' - #depends_on application.js'很好。 – vaughan 2012-03-19 06:27:02