2013-02-21 79 views
1

config.assets.compile = true參數可啓用所謂的「實時編譯」。 我需要Rails在實時模式下爲每個請求編譯一個特定的資源(sample.css.scss.erb),但其餘資源應該仍然是預編譯的。 我該如何做到這一點?僅針對Rails中的一個文件編譯實況資產

回答

1

選項1 - 把sample.css.scss.erbconfig.assets.manifest (default="public/assets")不同的路徑,並與javascript_include_tag

選項2添加它 - 從config.assets.precompile刪除它

config.assets.precompile -= %w(sample.css.scss.erb) 

確保清潔,然後以預編譯測試它。

我沒有測試任何選項,請讓我們知道,如果有任何適合你的作品。

0

當通過.css.erb文件預處理css時,需要實時編譯文件。 它意味着動態編譯CSS。

例如:允許用戶設置的顏色和希望有條件使用「活彙編」

在這種情況下,我會建議動態渲染,而不是活編譯/users/:id/styles.css.erb 。

可能有數百萬用戶的原因,並且在使用Ec2實例的生產環境中會花費更多。這就是爲什麼我會建議以下解決方案:

首先定義在UsersController您的自定義操作:

# config/routes.rb 
match '/users/:id/styles' => 'users#styles', :as => :user_styles 

鏈接到你的佈局「樣式」:

# app/views/layouts/application.html.erb 
= stylesheet_link_tag 'application', user_styles_path(current_user, :format => 'css') 

中定義的動作你控制器。你可以做任何你想在這裏檢索用戶的喜好:

# app/controllers/users_controller.rb 
class UsersController < ApplicationController 
    def styles 
    @colors = User.find(params[:id]).colors 
    end 
end 

這一行動將自動生成這樣的觀點:

# app/views/users/styles.css.scss.erb 
$background-color: <%= @colors[:background] %>; 

body { 
    background-color: $background-color; 
} 

更多的想法和suggetions者居多。