我正在開發一款Rails應用程序,我們希望允許用戶使用管理工具來創建新主題。管理工具是一個單獨的應用程序,並通過數據庫與我們的主應用程序通信。我的問題是我編寫了自定義的Sass擴展來將我們的數據加載到我們的樣式表中,但一旦完成,我無法在生產環境中重新編譯資源。在生產中重新編譯Sass資產
到目前爲止,我已經看到了兩種可能性是:
1.Increment config.assets.version的版本。所以我有這樣的代碼:
MyApp::Application.assets.version =
(MyApp::Application.config.assets.version.to_i + .1)
從我讀過什麼增加一點應引起資產重新編譯,但似乎當用手遞增,重新啓動服務器只工作。
2.創建一個編譯器,並告訴它清理舊資產,並重新編譯:
compiler = Compass::Compiler.new(
Rails.root.to_s,
Compass.configuration.sass_path,
Compass.configuration.css_path,
{:sass => Compass.sass_engine_options})
compiler.clean!
compiler.run
使用這種方法,但是,我碰到的問題是,鏈輪:: Index.expire_index!方法在嘗試創建新編譯器時引發錯誤。
是的,我知道我可以設置資產重新編譯每個請求,但性能命中不是我們想要的。另外,由於這是一個主題,數據不應該經常變化,所以我們只需要在管理員選擇保存新主題時重新編譯。
所以,最後,我的問題是:有沒有其他可能的方法來做我想要的?或者我是走向正確的道路,如果是這樣,我會在哪裏出錯?
編輯: 我忘了提及,因爲我們使用Sass函數來更改樣式表的值,即使我打開生產編譯選項,它也不起作用。由於實際樣式表永遠不會改變。