另一个问题" Disable Sprockets asset caching in development"解决了如何在Rails 3.2中禁用Sprockets缓存的问题。你如何在Rails 4上做同样的事情?我正在开发一个资产管道深处的gem,并且必须清除tmp/cache/*
并重新启动Rails会变得很累。
答案 0 :(得分:5)
如果您查看链接source,您可以看到如果cache_classes
为真,那么app.assets
将设置为app.assets.index
,并且不再检查文件系统。
为了在开发过程中解决这个问题,您可以在development.rb
配置中添加与following类似的内容:
# Sprockets configuration: prevent sprockets from caching assets in development
# when cache_classes is set to true
sprockets_env = nil
config.assets.configure do |env|
sprockets_env = env
# Sprockets environment configuration goes here
# env.js_compressor = :uglifier # or :closure, :yui
# env.css_compressor = :sass # or :yui
end
if config.cache_classes
config.after_initialize do
Rails.application.assets = sprockets_env
end
end
在Sprockets :: Index对象被覆盖之前,这基本上是对Sprockets :: Environment对象的尊重,并且即使cache_classes
为真,也允许检查文件系统的新资产。这似乎对我们的开发有用,所以希望它也可以帮助其他人。