我已经开始简单的Rails应用程序的开发。 经过几个小时的工作,我必须以某种方式删除的CSS仍然是加到网页通知。
为了解决这个问题,我执行以下操作几次:
- 停止/启动服务器
- 使用轨道服务器
- 使用torquebox服务器
- 删除浏览器缓存
但没有任何变化。 这是很奇怪的 - 新的CSS定义了应用,但那些我已经删除了还在那里。 于是,我放弃了,决定创建新的项目。
我已经安装了新的项目(其骨架是一样的第一个),当我打开一个视图,太适用从旧项目的样式。 我决定再看看http://guides.rubyonrails.org/asset_pipeline.html并找出设定
#Expands the lines which load the assets
config.assets.debug = false
解决了这个问题。 但是,什么是这个选项究竟在做什么? 为什么老项目的CSS被应用时,这是真的吗?
此选项的效果是很好的描述这个职位 ,但我会在这里总结一下为好。 改变的价值config.assets.debug
坐落于开发和便于调试的页面加载时间之间的折衷。
基本上:
config.assets.debug = true
:就像你在发展看到他们的资产分别送达,主办。 像SASS或者CoffeeScript的预处理语言仍然会显示为他们的目标语言(即分别为CSS和JS)。
config.assets.debug = false
:资产捆绑到像文件application.css
和application.js
。 错误的堆栈跟踪可能没有正确的行数更多,这是很难映射那些回你原来的代码。
如果你到了这个网页,有可能你在这里是因为你正在使用Rails的资产管道和您更改JavaScript文件之一,并重新加载页面,当你在源标签中搜索的变化不会反映在Chrome中。
如上所述, config.assets.debug = false
提示链轮宝石分别所有单独的JavaScript和CSS文件捆绑成一个的application.js和application.css。 此外链轮运行在所有相关文件的SASS和CoffeeScript的(如果你没有使用--skip-咖啡)的预处理器生成CSS和浏览器可以理解JavaScript文件。
其中一个重要的注意事项如下。 红宝石导游说,这大约调试=假:
资产在服务器启动后的第一个请求缓存。 如果有任何在清单中的文件已请求之间变化,服务器用新编译的文件进行响应。
这意味着如果你不改变CSS或请求之间的javascript文件,然后缓存会被使用。 只要更改一个文件很快,缓存是无效的和新的高速缓存为后续请求中创建。
因此,如果你更改了一个JavaScript文件和变化不会反映在页面重载,它无关,与此选项config.assets.debug
。
有这种所谓的其他选项config.action_controller.perform_caching
。
但默认情况下此选项默认为发展中的虚假。 也就是说,默认情况下,缓存仅在生产环境中启用。 而在目前的版本中,默认情况下只的Rails附带片段缓存。 你必须安装页面和动作缓存分开的宝石。
片段缓存允许视图逻辑的一个片段被包裹在一个高速缓存块和从缓存存储时的下一个请求到达的。但是,有一次,高速缓存片段也将过期当视图片段的变化(例如,HTML中视图变化)。
所以,接下来的问题是,为什么不反映你的JavaScript的变化? 答案是,尽管你的Rails设置谷歌浏览器,浏览器本身,是缓存的页面。 要删除缓存,关闭当前标签页中打开一个新标签,并再次访问该网站。