强制sprockets在测试期间编译资产

时间:2013-01-07 02:06:06

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

我有一个自定义链轮引擎和一个测试(rspec)。规范访问/assets/application.js然后检查内容。我想强制spockets在测试时编译(或渲染)资产,而不是从tmp / cache或它已经编译过的任何其他地方拉出来。

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

提前谢谢你, 佩里

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我最终这样做了:

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