在Rails 4上禁用Sprockets资产缓存

时间:2014-04-10 06:07:13

标签: ruby-on-rails caching ruby-on-rails-4 sprockets

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

1 个答案:

答案 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为真,也允许检查文件系统的新资产。这似乎对我们的开发有用,所以希望它也可以帮助其他人。