2011-10-04 56 views
9

我開始看到下面的輸出運行要求rspec的規格時,抑制/禁用「緩存未命中」的消息:如何運行rspec的測試時,在軌3.1

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

Normaly我會獲得通過的綠點測試和紅色的Fs與一些信息的錯誤消息。

有沒有辦法從輸出中禁用緩存未命中消息?

回答

4

我認爲這與rspec無關,rspec只是打印出軌道日誌中的內容。我覺得這post by Brian Weaver上的Phusion客運討論組可能會回答你的問題:

你已經安裝的機架緩存?我花了一天的時間+通過Passenger/Rails/Rack和其他許多寶石追蹤,找出爲什麼會出現類似的線條。 將以下內容添加到您的production.rb或development.rb文件中以擺脫「cache:....」行

config.action_dispatch.rack_cache = {:metastore =>「rails:/」,: entitystore =>「rails:/」,:verbose => false}

我從Rails的「中間件」配置中拉出了一行,將'verbose'從true更改爲false。

在你的情況,我想你想添加它你的測試環境文件。

+0

不知怎的,這沒」 t爲我工作: -/ – Papipo

+0

不幸的是,這並沒有爲我工作:(不知道是否有其他方法? –

+0

你使用蜻蜓寶石? –

3

除了@RyanTM之外,您還需要爲測試環境開啓緩存,以便DragonFly不會配置自己的Rack :: Cache(with: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} 
1

我無法讓上述任何變通辦法爲我工作,但加入這個我「配置/初始化/ 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