在开发和生产中配置Rails Asset Pipeline

时间:2012-07-25 03:12:05

标签: ruby-on-rails asset-pipeline

我仍然不太确定使用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中是连接的。因此,生产中不再需要scaffolds.css和depot.css。

我怎样才能在开发中使用上述代码,然后在生产中,让资产管道知道某些资产已在application.css / js中连接,然后在代码中删除那些资产链接标记?

如果无法做到这一点,我应该如何避免加载冗余资源并保持prod部署的可管理性? (意思是不在生产中手动删除link_tag)

感谢。

1 个答案:

答案 0 :(得分:2)

你没有把

<%= 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.rb config.assets.debugfalse,导致资产被合并为一个application.css文件(同样,假设您的{{} 1}}行在//= require中是正确的。这将导致仅为生产中的application.css创建 1 链接标记。