在开发和生产中配置Rails资产管道



我仍然不太确定使用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链接标记。

最新更新