2008-09-17 45 views
19

如果您在Rails應用程序中使用HAML和SASS,那麼您在public/stylesheet/*。sass中定義的任何模板都將被編譯爲* .css樣式表。從您的代碼中,您可以使用stylesheet_link_tag按名稱獲取資產,而無需擔心擴展名。在您的應用程序和源代碼控制中存儲SASS生成的CSS的最佳方法是什麼?

許多人不喜歡在版本控制中存儲生成的代碼或編譯的代碼,也有理由認爲public /目錄不應包含不發送給瀏覽器的元素。

在您的Rails項目中佈置SASS資源時遵循的最佳模式是什麼?

回答

11

我總是版本中的「公共/樣式表/上海社會科學院/ *頂嘴。」所有的樣式表,並建立了編譯者排除過濾器:

/public/stylesheets/*.css 
0

如果我可以管理它,當我爲項目選擇HAML/SASS時,我喜歡將所有樣式存儲在SASS模板中,然後刪除application.css和scaffold.css。然後,我將SASS公開/ stylesheets/sass,並將/public/stylesheets/*.css添加到.gitignore。

如果我不得不使用SASS和基於CSS的資產組合,它會更復雜一點。處理這個問題最簡單的方法是在樣式表目錄中爲生成的CSS提供一個輸出子目錄,然後排除.gitignore中的該子目錄。然後,在您的視圖中,您必須通過選擇public/stylesheets/foo樣式表或public/stylesheets/sass-out/foo樣式表來了解您使用的是哪種樣式類型(SASS或CSS)。

如果你必須去第二條路線,建立一個幫手來抽象出sass-out子目錄。

6

老實說,我喜歡有版本控制我的編譯SASS的樣式表。它們很小,只有當.sass文件發生變化時纔會發生變化,並且將它們與應用程序的其餘部分一起部署意味着SASS編譯器不需要在生產中進行引導。

另一個好處(儘管很小)是,如果你不使用頁面緩存,你的rails進程不需要對你的public_html目錄有寫權限。所以你的服務器的一個漏洞可能會變得很糟糕。

5

有點相關,但在capistrano部署期間重新生成CSS是一個不錯的主意。此回調鉤子做到了這一點:

after "deploy:update_code" do 
    rails_env = fetch(:rails_env, "production") 
    run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'" 
end 

更新:這應該不再需要用Haml的/薩斯的現代版本。

13

compass框架建議將您的sass樣式表放在app/stylesheets下,並將您的已編譯的css放入public/stylesheets/compiled。

你可以通過添加如下代碼到你的environment.rb配置此:

Sass::Plugin.options[:template_location] = { 
    "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled" 
} 

如果您使用指南針的框架,它在安裝時會設置此配置適合你。

相關問題