在Rails 4上禁用Sprockets资产缓存

另一个问题“ 在开发中禁用Sprockets资产缓存 ”解决了如何在Rails 3.2中禁用Sprockets缓存。 你如何在Rails 4上做同样的事情? 我正在开发一个资产管道深处的gem,并且必须清除tmp/cache/*并重新启动Rails会变得很累。

如果查看Sprockets 源代码 ,可以看到如果cache_classes为true,那么app.assets将设置为app.assets.index ,并且不再检查文件系统。

为了解决这个问题,您可以在development.rb配置中添加类似以下的内容 :

 # 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 :: Environment对象被覆盖之前,这基本上是对Sprockets :: Environment对象的尊重,并且即使cache_classes为true,也允许检查文件系统的新资产。 这似乎对我们的开发有用,所以希望它也可以帮助其他人。