另一个问题“Disable Sprockets asset caching in development”解决了如何在 Rails 3.2 中禁用 sprockets 缓存。你如何在 Rails 4 上做同样的事情?我正在研究 Assets 管道深处的 gem ,必须清除 tmp/cache/*
并重新启动 Rails 越来越累。
最佳答案
如果您查看 sprockets source ,你可以看到如果 cache_classes
那么为真 app.assets
设置为 app.assets.index
,不再检查文件系统。
为了在开发中解决这个问题,您可以添加类似于 following 的内容。给您的 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::Index 覆盖之前获得了对它的尊重,并且即使在
cache_classes
时也允许检查文件系统是否有新 Assets 。是真的。这似乎对我们的开发有用,所以希望它也能帮助其他人。
关于ruby-on-rails - 在 Rails 4 上的开发中禁用 sprockets Assets 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22979839/