如何在 rails 3.1 中运行 rspec 测试时抑制/禁用"cache miss"消息



当运行request rspec specs时,我开始看到以下输出:

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

正常情况下,我将得到绿色的点,通过测试和红色的f与一些信息的错误消息。

是否有办法从输出中禁用缓存错过消息?

我认为这与rspec无关,rspec只是打印出rails日志中的内容。我认为Brian Weaver在Phusion Passenger讨论组上的这篇文章可能会回答你的问题:

是否安装了机架缓存?我花了一天的时间追踪乘客/Rails/Rack和许多其他宝石,以找出为什么出现类似的线条。将以下内容添加到您的产品中。Rb或开发。Rb文件,以摆脱'缓存:....line

config.action_dispatch。Rack_cache = {:metastore => "rails:/",:entitystore => "rails:/",:verbose => false}

我从Rails的"中间件"配置中取出这行,只是将"verbose"从true更改为false。

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

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

# 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}

我无法让上述任何一个解决方案为我工作,但将其添加到我的'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

最新更新