gpt4 book ai didi

ruby-on-rails - 在开发中禁用 Sprockets Assets 缓存

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:26 25 4
gpt4 key购买 nike

我正在使用 Rails 3.2.13 和 Rails Asset Pipeline。我想使用 Asset Pipeline,这样我就可以为我的 Assets 使用 SASS、CoffeeScript 和 ERB,并让 Pipeline 自动编译它们,所以我无法在开发中关闭管道。我从来没有在开发中预编译 Assets ,甚至没有 public/assets/ 目录。

但是,当我对包含的文件进行更改时,例如 layout.html.erb 中包含(呈现)的 _partial.html.erb 文件> 文件,而不更改文件本身(在此示例中 layout.html.erb),Sprockets 不会检测到更改并使缓存无效,所以我一直得到相同的陈旧文件。当我在积极的开发中这样做时,我想禁用任何 Assets 缓存,以便我可以在每个请求中获得更改,但我不知道如何执行此操作。我在我的 development.rb 中设置了以下所有内容:

config.action_controller.perform_caching = false
config.action_dispatch.rack_cache = nil
config.middleware.delete Rack::Cache
config.assets.debug = true
config.assets.compress = false
config.cache_classes = false

尽管如此,文件仍显示在 tmp/cache/assets/tmp/cache/sass/ 下,并且在未来的请求中无法进行更改。现在,每次我想看到更改时,我都必须手动删除这些目录。

不幸的是,How Caching Works 的全部内容 Assets 管道的 RoR 指南部分是:

Sprockets uses the default Rails cache store to cache assets in development and production.

TODO: Add more about changing the default store.

那么,我怎样才能让 Sprockets 按需编译 Assets 而不缓存结果呢?

最佳答案

这是魔法咒语:

config.assets.cache_store = :null_store  # Disables the Asset cache
config.sass.cache = false # Disable the SASS compiler cache

Assets 管道有它自己的缓存实例,设置 config.assets.cache = false 什么都不做,所以你必须将它的缓存设置为 null_store禁用它。

即便如此,SASS 编译器也有自己的缓存,如果您需要禁用它,则必须单独禁用它。

关于ruby-on-rails - 在开发中禁用 Sprockets Assets 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16970196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com