【问题标题】:What exactly "config.assets.debug" setting does?“config.assets.debug”设置到底有什么作用?
【发布时间】:2013-05-03 11:22:26
【问题描述】:

我已经开始开发简单的 Rails 应用程序。经过几个小时的工作,我注意到以某种方式删除的 css 仍然应用于网页。

为了解决这个问题,我多次执行了以下操作:

  1. 停止/启动服务器
  2. 使用 Rails 服务器
  3. 使用扭矩箱服务器
  4. 删除浏览器缓存

但没有任何变化。这很奇怪 - 新的 css 定义被应用了,但我删除的那些仍然存在。所以,我放弃了,决定创建一个新项目。

我已经设置了新项目(它的脚手架与第一个相同),当我打开其中一个视图时,旧项目中的样式也被应用了。我决定再次查看http://guides.rubyonrails.org/asset_pipeline.html 并找出该设置

#Expands the lines which load the assets
config.assets.debug = false

解决了这个问题。但是这个选项到底在做什么呢?当这是真的时,为什么要应用旧项目的 css?

【问题讨论】:

标签: ruby-on-rails ruby asset-pipeline


【解决方案1】:

这个选项的效果在this post中有很好的描述,但我也会在这里总结一下。更改config.assets.debug 的价值在于在开发中的页面加载时间和易于调试之间进行折衷。

基本上:

config.assets.debug = true:资产是单独提供的,按照您在开发中看到的那样组织。 SASS 或 CoffeeScript 等预处理语言仍将显示为其目标语言(即分别为 CSS 和 JS)。

config.assets.debug = false:资产被捆绑到像application.cssapplication.js 这样的文件中。错误堆栈跟踪可能不再具有正确的行号,并且更难将它们映射回您的原始代码。

【讨论】:

    【解决方案2】:

    如果您访问此网页,您可能会在这里,因为您使用的是 Rails 资产管道,并且您对其中一个 javascript 文件进行了更改并重新加载了该页面,并且在您搜索时不会反映更改Chrome 中的“来源”选项卡。

    如上所述,config.assets.debug = false 提示 Sprockets gem 将所有单独的 javascript 和 css 文件分别捆绑到一个 application.js 和 application.css 中。 Sprockets 还对所有关联文件运行 SASS 和 CoffeeScript(如果您没有使用 --skip-coffee)预处理器,以生成浏览器可以理解的 css 和 javascript 文件。

    一个重要的注意事项如下。 Ruby Guides 这么说 debug = false:

    在服务器启动后的第一个请求上缓存资产。如果 清单中的任何文件在请求之间发生了变化, 服务器响应一个新的编译文件。

    这意味着如果您不更改请求之间的 css 或 javascript 文件,那么将使用缓存。一旦您更改文件,缓存就会失效,并会为后续请求创建新的缓存。

    因此,如果您对 javascript 文件进行了更改并且更改未反映在页面重新加载上,则与此选项 config.assets.debug 无关。

    还有另一个选项叫做 config.action_controller.perform_caching

    但默认情况下,此选项在开发中默认为 false。也就是说,默认情况下,缓存仅在您的生产环境中启用。在当前版本中,Rails 默认只附带片段缓存。您必须为页面和动作缓存安装单独的 gem。

    Fragment Caching 允许将视图逻辑的片段包装在缓存块中,并在下一个请求进入时从缓存存储中提供。但是,当视图片段更改时,缓存片段也会过期(例如,视图中的 HTML 更改)。

    所以问题仍然存在,为什么您的 javascript 的更改没有反映出来?答案是谷歌浏览器,浏览器本身,不管你的 Rails 设置如何缓存页面。要删除缓存,请关闭当前选项卡,打开一个新选项卡,然后再次访问该站点。

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 2021-10-30
      • 1970-01-01
      • 2017-07-26
      • 2011-04-18
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多