2016-06-14 15 views
0

我在測試環境中使用Webrick運行測試Ruby-on-Rails應用程序。自動化的端到端測試訪問一個管理頁面,該頁面會導致另一個管理頁面使用的JavaScript文件被更新。問題在於第二個管理頁面沒有看到更新,而是獲取了JavaScript文件的舊副本。我可以在文件系統上看到更改後的文件,但即使從命令行使用curl,我仍然會得到該文件的舊版本。測試用於工作(至少在Rails 4.0中,如果不是4.1)。現在,我正在嘗試更新Rails 4.2,以發現此問題。鏈接緩存未被文件更改失效

我能做些什麼來告訴Rails/Sprockets忘記它更新後的JavaScript的舊緩存副本嗎?我知道我什麼時候更新它,如果我不能有選擇地重置Sprocket的整個緩存,我也不會介意。我不能做的是每次JavaScript文件更新時重新啓動服務器。

回答

0

我嘗試了很多方法讓Sprockets「忘記」它的緩存副本,但它似乎非常有決心要記住,並且我開始有一種感覺,即我正在與一個根深蒂固的設計決定作鬥爭。最後,我決定,爲了生成即時JavaScript文件,我會完全避免使用鏈接,這意味着要自己處理文件的編譯和指紋識別,併爲那些生成的文件編寫我自己的javascript_include_tag版本。

作爲參考,編譯和指紋實際上是相當容易:

​​

(然後就寫出來了指紋的文件,以公開/資產)。