【问题标题】:Disable Sprockets asset caching in development on Rails 4在 Rails 4 开发中禁用 Sprockets 资产缓存
【发布时间】:2014-05-23 16:13:07
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    如果您查看 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::Index one 覆盖之前对 Sprockets::Environment 对象表示敬意,即使cache_classes 为真,也允许检查文件系统是否有新资产。这似乎对我们的开发工作有用,所以希望它也能帮助其他人。

    【讨论】:

    • 啊,我们目前还在Rails 4.0上,所以我们升级时需要重新调查。感谢您的提醒。
    猜你喜欢
    • 2013-06-02
    • 2017-08-14
    • 1970-01-01
    • 2011-12-30
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    相关资源
    最近更新 更多