【问题标题】:Force sprockets to compile asset during test强制链轮在测试期间编译资产
【发布时间】:2012-12-20 18:26:27
【问题描述】:

我有一个定制的 sprockets 引擎和一个与之配套的测试 (rspec)。规范访问 /assets/application.js 然后检查内容。我想强制 spocket 在测试时编译(或渲染)资产,而不是从 tmp/cache 或它可能已经编译的任何其他地方提取它。

我该怎么做?我在 sprockets 代码中没有看到任何明显的“忽略缓存”。

提前谢谢你, 佩里

【问题讨论】:

    标签: ruby-on-rails-3.2 asset-pipeline sprockets


    【解决方案1】:

    我最终这样做了:

    before(:each) do
      (Rails.root + "tmp/cache").rmtree
    end
    

    按照建议,我的代码现在是这样的:

    before(:each) do
      @original_cache = Rails.application.assets.cache
      Rails.application.assets.cache = ActiveSupport::Cache.lookup_store(:null_store)
    end
    
    after(:each) do
      Rails.application.assets.cache = @original_cache
    end
    

    【讨论】:

      【解决方案2】:

      也许将null_store 设置为缓存后端比每次都清除tmp 文件夹要好。在您的测试设置上尝试这样的事情(在应用程序初始化之后):

      Rails.application.assets.cache = ActiveSupport::Cache.lookup_store(:null_store)
      

      【讨论】:

      • 太棒了!让我试试,我会回复你的。我想知道我是否可以把它放在 environment/test.rb 文件中?
      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      相关资源
      最近更新 更多