2012-07-25 110 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