2011-10-14 51 views
0

如何在我的應用程序中使用rails/asset pipeline/sprockets運行特定的編譯任務?Asset Pipeline ::特定資源彙編

基本上,我有一套用戶創建的應用程序的CSS;用戶上傳css的應用程序的部分(除了安全考慮等,已經處理)。我如何運行一個任務來編譯特定的CSS集到主要的CSS中?這不是一個實時編譯問題,我只想接受一個輸入,將它編譯爲一個文件,並按需提供,這更像是一個'我需要這套預編譯的css,當我想要預編譯它時正在運行的應用」

我更新先前實施的東西在那裏我可以隨意滿足用戶生成的css,我想這與資產整合的管道。我怎樣才能更好地控制資產管道?我假設我需要更多地瞭解鏈輪,但我很好奇任何人都可以添加協助。

+0

可能創建一個清單,我可以傳遞一個變量(特定的CSS),然後運行它輸出一個唯一的CSS包? – blueblank

回答

0

每用戶CSS文件就可以,但使用鏈輪和管道以預想方式生成的文件是要採取一些搞亂的。

要生成你將不得不給用戶的CSS文件:

1.生成一個清單給用戶。

清單將包括通過鏈輪指令規定的主要CSS,並要求在年底的自我與用戶一起CSS。

清單文件需要一個名稱是用戶唯一的

2.編譯清單。

你不會想編譯所有這些,所以你需要寫的東西做的只是一個你想要的。

3.添加新艙單管道清單

這是保存清單和文件在管道及其散列反零件的名稱之間的映射YAML文件。您需要將新的(或更新的)文件散列添加到此,而不會破壞其他條目。

4.重新啓動您的應用程序。

這是必需的,因爲Rails的管道中的表現看,當它啓動時,這樣你就不會看到你就做,直到發生這種情況的任何變化。

==

然後您將能夠引用基於用戶名的CSS文件爲用戶。

使用這種方法是,每次部署自定義清單都會被覆蓋。

如果您將用戶的自定義CSS存儲在數據庫中,則可以在每次部署時寫出自定義用戶清單。

另一種方法是使用主CSS管道,完全忽略它的用戶CSS,只是在做你現在做什麼。在管道CSS上使用鏈接,在用戶CSS上使用另一個。當文件被創建時,你仍然可以縮小CSS,但是如果額外的請求沒有問題,那麼基於上述內容。

祝你好運!

+0

第二個更容易處理,排隊,並輸出到一個縮小的文件,現在。 – blueblank