在一個Rails 3.1應用程序中,一個控制器需要使用一組自定義變量對每個請求所需的所有Sass樣式表進行編譯。理想情況下,編譯必須通過資產管道進行,以便生成基於內容的資產名稱(包含內容的MD5哈希值)。對於解決方案來說,使用純Sass功能非常重要,而不是訴諸於Sass樣式表的ERB處理。在Rails 3.1下編譯每個請求的自定義變量Sass
從研究我在這裏和其他地方做了,下面似乎是一個可行的方法:
設置變量訪問
創建使用自定義的某種類型的變量訪問橋Sass功能,例如,如Konstantin Haasehere(gist)所述。這似乎很容易做到。
通過Sass部分配置所有變量訪問,例如在Compass方式的
_base.sass
中。部分可以使用上面定義的自定義函數。也很容易。
捕捉所有資產的引用
裝飾視圖對象的
asset_path
方法。我有這個工作很好。使用
Sprockets::Environment
的自定義子類來解析引用。這也很好。
部隊資產重新編譯,無論文件修改的時間
我還沒有找到一個很好的解決方案呢。
我見過通過實例化新的
Sass::Engine
並傳遞將在Sass::Script::Functions::EvaluationContext
中可用的自定義數據來手動啓動Sass處理的示例。這種方法的問題是我必須自己管理文件命名和路徑,而且我總是冒着可能偏離什麼Sprockets的風險。我無法找到強制處理每個請求的任何示例,無論文件模式時間,也允許自定義變量傳遞。
我會很感激上的一般做法意見以及任何具體指示/建議如何以最佳方式處理(3)。
太棒了,我很期待! – Sim