官方文档:http://guides.ruby-china.org/asset_pipeline.html

http://guides.rubyonrails.org/asset_pipeline.html

在开发环境中,Asset Pipeline 会按照清单文件中指定的顺序处理静态资源文件。

对于清单文件 app/assets/javascripts/application.js

//= require core
//= require projects
//= require tickets

会生成下面的 HTML:

<script src="/assets/core.js?body=1"></script>
<script src="/assets/projects.js?body=1"></script>
<script src="/assets/tickets.js?body=1"></script>

其中 body 参数是使用 Sprockets 时必须使用的参数。

1 检查运行时错误

在生产环境中,Asset Pipeline 默认会在运行时检查潜在错误。要想禁用此行为,可以设置:

config.assets.raise_runtime_errors = false

当此选项设置为 true 时,Asset Pipeline 会检查应用中加载的所有静态资源文件是否都已包含在 config.assets.precompile 列表中。如果此时 config.assets.digest 也设置为 true,Asset Pipeline 会要求所有对静态资源文件的请求都包含指纹(digest)。

2 找不到静态资源时抛出错误

如果使用的 sprockets-rails 是 3.2.0 或以上版本,可以配置找不到静态资源时的行为。如果禁用了“静态资源后备机制”,找不到静态资源时抛出错误。

config.assets.unknown_asset_fallback = false

如果启用了“静态资源后备机制”,找不到静态资源时,输出路径,而不抛出错误。静态资源后备机制默认启用。

3 关闭指纹

通过修改 config/environments/development.rb 配置文件,我们可以关闭指纹:

config.assets.digest = false

当此选项设置为 true 时,Rails 会为静态资源文件的 URL 生成指纹。

4 关闭调试

通过修改 config/environments/development.rb 配置文件,我们可以关闭调式模式:

config.assets.debug = false

当调试模式关闭时,Sprockets 会对所有文件进行必要的预处理,然后把它们连接起来。此时,前文的清单文件会生成下面的 HTML:

<script src="/assets/application.js"></script>

当服务器启动后,静态资源文件将在第一次请求时进行编译和缓存。Sprockets 通过设置 must-revalidate Cache-Control HTTP 首部,来减少后续请求造成的开销,此时对于后续请求浏览器会得到 304(未修改)响应。

如果清单文件中的某个文件在两次请求之间发生了变化,服务器会使用新编译的文件作为响应。

还可以通过 Rails 辅助方法启用调试模式:

<%= stylesheet_link_tag "application", debug: true %>
<%= javascript_include_tag "application", debug: true %>

当然,如果已经启用了调式模式,再使用 :debug 选项就完全是多余的了。

在开发模式中,我们也可以启用压缩功能以检查其工作是否正常,在需要进行调试时再禁用压缩功能。

Rails的静态资源管理(三)—— 开发环境的Asset Pipelin的更多相关文章

  1. Rails的静态资源管理(五)—— 自定义 Asset Pipeline

    官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...

  2. Rails的静态资源管理(四)—— 生产环境的 Asset Pipeline

    官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...

  3. Rails的静态资源管理(二)—— 如何使用 Asset Pipeline

    官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...

  4. Rails的静态资源管理(六)—— Asset Pipeline缓存存储方式、预处理、升级等

    官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...

  5. Rails的静态资源管理(一)——Asset Pipeline是什么

    官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...

  6. 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础

    上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是W ...

  7. 从0构建webpack开发环境(三) 开发环境以及 webpack-dev-server 的使用

    sourceMap 实际应用开发过程中大部分时间都是处于开发模式中,其中需要频繁的修改代码.调试和打包. 但是打包后的代码多个模块压缩到了一个bundle文件,如果出现警告或者异常很难定位到具体模块和 ...

  8. Ruby Rails学习中:调试信息和 Rails 的三种环境,Users 资源,调试器,Gravatar 头像和侧边栏

    注册 一.调试信息和 Rails 环境 现在咱们要实现的用户资料页面是我们这个应用中第一个真正意义上的动态页面.虽然视图的代码不会动态改变, 不过每个用户资料页面显示的内容却是从数据库中读取的.添加动 ...

  9. Django的基本开发环境配置和MTV模型

    一.MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的 ...

随机推荐

  1. EF Code-First 学习之旅

    什么是Code-First 基本工作流: 写好应用程序的领域类和上下文类→配置领域类的额外映射→运行程序→Code-First API创建新的数据库或与现有数据库对应→添加种子数据到数据库中测试

  2. Mysql -- SQL常用命令实例

    sql: structured query language(结构化查询语言) 用户名和密码:root 创建一个名称为mydb1的数据库. create database mydb1; 查看所有数据库 ...

  3. CDN,内容分发网络。

    CDN,内容分发网络. 就近获取内容,提高用户访问网站响应速度. 广州的用户,访问广州的节点.北京的用户,访问北京的节点. 图片CDN,提高图片访问,方便数据迁移. DNS,域名系统.处理域名和IP地 ...

  4. nova libvirt event

    nova中利用libvirt 事件来更新vm的DB中的power状态 https://wiki.openstack.org/wiki/ComputeDriverEvents Nova compute ...

  5. U14739 X ask Y III 子区间异或和

    题意:就是求所有子区间的异或和的和 题解:就是算每一位对结果的贡献(最近好像遇到很多次这种题目),先前缀异或,从左向右扫记录二进制前缀的1,0个数,xor[i]==xor[j]^1的时候就加上这一位的 ...

  6. 算法练习4---冒泡排序java版

    冒泡排序的基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反 ...

  7. LINUX C的学习

    好吧看着LINUX那么多的命令好难受= =看到第三章有介绍C的编译的,先写下试试喽. 可以用gedit或者vim,老师虽然大肆吹捧vim的经典原谅用的真吉儿难受- -,一开始没安装vim用的gedit ...

  8. Linux下tar命令的各种参数选项和他们的作用整理

    1.建立TAR包(打包)命令格式:tar cvf TAR包文件名.tar 所备份的文件或目录功能描述:tar cvf命令用于把指定的目录或文件打包到指定的文件中.“c”指定建立(或压缩)TAR包,“v ...

  9. MySQL分片 --转自Peter Zaitsev对MySQL分片的建议

    本文作者Peter Zaitsev是知名数据库专家,2006年联合创立了Percona.负责维护网站“MySQL性能”.同时,他也是<高性能MySQL>一书的联合作者.以下是他对MySQL ...

  10. c++primer 第三章编程练习答案

    3.7.1 #include<iostream> int main() { using namespace std; ; int height,inch,foot; cout <&l ...