在Rails 4上禁用Sprockets资产缓存

Cym*_*men 7 caching ruby-on-rails sprockets ruby-on-rails-4

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

Ben*_*enV 5

如果查看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
Run Code Online (Sandbox Code Playgroud)

在Sprockets :: Environment对象被覆盖之前,这基本上是对Sprockets :: Environment对象的尊重,并且即使在cache_classes为真时也允许检查文件系统的新资产.这似乎对我们的开发有用,所以希望它也可以帮助其他人.