我仍然不太确定使用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)
感谢。
答案 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.debug
将false
,导致资产被合并为一个application.css
文件(同样,假设您的{{} 1}}行在//= require
)中是正确的。这将导致仅为生产中的application.css
创建 1 链接标记。