我仍然不太确定使用rails资产管道的最佳实践。在rails骨架项目中,application.html.erb包含如下代码:
<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中是连接的。因此生产中不再需要scaffold.css和deput.css。
我怎么能把上面的代码放在开发中,然后放在生产中,让资产管道知道某些资产已经在application.css/js中连接起来,然后删除代码中的资产链接标记?
如果这不可能,我应该如何避免加载多余的资源并保持生产部署的可管理性?(意味着在生产中不会手动删除链接标签)
谢谢。
您不放入
<%= 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
时,它将在开发模式下为application.css
文件的Sprockets指令中所需的每个资产的每个样式表自动生成<link ... />
标记。
在config/environment/production.rb
中,默认情况下config.assets.debug
将为false
,从而使资产连接到一个application.css
文件中(再次假设//= require
行在application.css
中是正确的)。这将导致在生产中仅为application.css
创建1链接标记。