如何在rails 3.1中运行rspec测试时禁止/禁用“缓存未命中”消息

时间:2011-10-04 17:54:58

标签: ruby-on-rails ruby rspec

运行请求rspec规范时,我开始看到以下输出:

cache: [GET /login] miss
cache: [GET /javascripts/jquery.min.js?1317513028] miss

Normaly我会得到绿点用于传递测试和红色Fs以及错误消息的一些信息。

有没有办法从输出中禁用缓存未命中消息?

3 个答案:

答案 0 :(得分:4)

我认为这与rspec无关,而且rspec只是打印出rails log中的内容。我认为Phusion Passenger讨论组的这个post by Brian Weaver可能会回答你的问题:

  

您是否安装了机架缓存?我度过了美好的一天+通过Passenger / Rails / Rack和许多其他宝石进行追踪,以找出与此类似的线条出现的原因。   将以下内容添加到您的production.rb或development.rb文件中以摆脱'cache:....'行

     

config.action_dispatch.rack_cache = {:metastore => “rails:/”,:entitystore => “rails:/”,:verbose =>假}

     

我从Rails的“中间件”配置中删除了该行,只是将'verbose'从true更改为false。

在您的情况下,我想您要将其添加到您的测试环境文件中。

答案 1 :(得分:3)

除了@RyanTM之外,您还需要为测试环境打开缓存,以便DragonFly不配置自己的Rack :: Cache(使用:verbose => true),而是使用Rails设置的一个。 / p>

# set Rack::Cache verbose to false to prevent logging to rspec output         
config.action_controller.perform_caching = true                               
config.action_dispatch.rack_cache = {:metastore => "rails:/", :entitystore => "rails:/", :verbose => false}

答案 2 :(得分:1)

我无法让上述任何一种解决方法适用于我,但是将其添加到我的'config / initializers / dragonfly.rb'工作:

if Rails.env.test?
  Rails.application.middleware.delete Rack::Cache
  Rails.application.middleware.insert 0, Rack::Cache, {
    :verbose     => false,
    :metastore   => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/meta"), # URI encoded in case of spaces
    :entitystore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/body")
  }
end