2012-09-03 23 views
3

我試圖運行一個明顯沒有準備好黃金時段的CRM寶石。我試圖通過添加所有我發現程序錯誤的東西來回饋項目。如何強制Rails預編譯SCSS樣式表?

但我陷入資產預先編譯問題。我在資產管道上一英里寬和一英寸深。我已經運行:

束EXEC耙資產:預編譯

而是試圖把應用了在瀏覽器中時,下面的錯誤寫入日誌文件:

ActionView::Template::Error (print.css isn't precompiled): 
    5:  %title Not Ready Yet CRM 
    6:  == <!-- #{controller.controller_name} : #{controller.action_name} --> 
    7:  = stylesheet_link_tag :application 
    8:  = stylesheet_link_tag :print, :media => 'print' 
    9:  %style= yield :styles 
    10: 
    11:  = javascript_include_tag :application 

實際的文件在寶石中不叫「print.css」。它被稱爲「print.css.scss」。

我該在哪裏告訴Rails在資源預編譯中選取這些文件?如果我這樣做,它會自動知道如何解釋SCSS文件?

回答

6

將其添加到config/application.rb或config/environments/production.rb中的config.assets.precompile

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
config.assets.precompile += %w(print.css) 
+0

謝謝。我注意到這條線存在於gem本身中,但顯然資產管道要求您知道需要在您用作引擎的gem中預編譯哪些內容。 我確定必須有一些額外的Railties.engines設置來處理這個我忽略的。 – AKWF

+0

「所有非JS/CSS已添加」是SCSS不是非CSS?或Coffeescript非JS? –

+1

scss和coffeescript文件被視爲css和js。像'example.css.scss'這樣的文件基本上是一個帶有scss預處理器的css文件。除了外部庫,人們現在只在rails應用程序中編寫scss或sass。如果默認只是編譯所有這些將會很糟糕。 – Robin