我正在使用Rails 3.2.13 和 Rails 资源管道(Asset Pipeline)。 我想要使用资源管道,这样我就可以在我的资产中使用SASS和CoffeeScript以及ERB,并使管道自动编译它们,因此我不能在开发过程中关闭管道。 我从未在开发过程中预编译资源,甚至没有public/assets/目录。
然而,当我更改一个包含的文件时,例如一个被包含(呈现)在layout.html.erb文件中的_partial.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 Asset Pipeline指南的整个缓存工作原理部分只有以下内容:
Sprockets使用默认的Rails缓存存储器在开发和生产环境下缓存资源。
TODO:添加更多关于更改默认存储器的信息。
那么,我该如何让Sprockets在需要时编译资产但不缓存结果?