2012-07-25 104 views
0

我仍然不確定使用rails資產管道的最佳做法。在Rails框架項目中,application.html.erb包含的代碼爲:在開發和生產中配置Rails資產管道

<head> 
    <title>My title</title> 
    <%= stylesheet_link_tag "scaffolds" %> 
    <%= stylesheet_link_tag "depot", media: "all" %> 
    <%= stylesheet_link_tag "application", media: "all" %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 
</head> 

現在的發展,所有的JS和CSS將正確投放。但在生產中,在預編譯所有資源(js和css)之後,我只需要application.css和application.js,因爲scaffolds.css和depot.css在application.css中是並置的。因此scaffolds.css和depot.css在生產中不再需要。

我怎麼能在開發,然後在生產中有上述代碼,有資產管道知道某些資產已經連接在application.css/js,然後刪除代碼中的資產鏈接標記?

如果這是不可能的,我應該如何避免加載冗餘資源並保持prod部署可管理? (意思是在生產中沒有手動刪除link_tag)

謝謝。

回答

1

你不把

<%= stylesheet_link_tag "scaffolds" %> 
<%= stylesheet_link_tag "depot", media: "all" %> 
<%= stylesheet_link_tag "application", media: "all" %> 

在你的佈局文件。你只把

<%= stylesheet_link_tag "application", media: "all" %> 

而且在config/environment/development.rb你要確保你有

config.assets.debug = true 

config.assets.debug設置爲true它會自動生成<link ... />標籤爲每個樣式表的開發模式所需要的每個資產在application.css文件的Sprockets指令中。

config/environment/production.rbconfig.assets.debugfalse默認情況下,導致資產被連接在一起成一個單一的文件application.css(同樣,假設你//= require線是正確的application.css。這將導致鏈接標籤在生產中僅被創建爲application.css

+0

我明白了。謝謝。 – 2012-07-26 04:23:05