我正在使用 Rails 3.2.13 和 Rails 资产管道。我想使用 Asset Pipeline,这样我就可以对我的资产使用 SASS、CoffeeScript 和 ERB,并让 Pipeline 自动编译它们,所以我无法在开发中关闭管道。我从来没有在开发中预编译资产,甚至没有public/assets/
目录。
但是,当我对包含的文件进行更改时,例如对_partial.html.erb
文件中包含(呈现)的layout.html.erb
文件进行更改,而不更改包含本身的文件(在此示例中layout.html.erb
),Sprockets 不会检测到更改并使缓存,所以我不断得到相同的陈旧文件。当我在积极开发中执行此操作时,我想禁用任何资产缓存,以便我可以获取每个请求的更改,但我不知道如何执行此操作。我在我的中设置了以下所有内容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/
并且在未来的请求中无法使用更改。现在,每次我想看到更改时,我都必须手动删除这些目录。
不幸的是,资产管道的 RoR 指南的缓存工作原理部分的全部内容是:
Sprockets 使用默认的 Rails 缓存存储来缓存开发和生产中的资产。
TODO:添加更多关于更改默认存储的信息。
那么,如何让 Sprockets 按需编译资产但不缓存结果?