OOZOU
與我們聯繫
返回 TIL 列表
ruby

抑制 rspec 警告

October 13, 2020
$ RUBYOPT=W0 ./bin/rspec spec/
...

$ RUBYOPT=W0 bundle exec rspec spec/
...

$ RUBYOPT=W0 rspec
...

$ RUBYOPT=W0 ...
...

RSpec 警告會弄亂你的測試輸出,讓 log 更難閱讀,在大型 Rails 專案中尤其如此。以下說明如何在維持乾淨工作流程的同時,有效地抑制這些警告。

全域抑制警告

把下面這行加到 spec_helper.rb 或 rails_helper.rb,就能為整個測試套件停用警告:

$VERBOSE = nil

使用情境:適合快速讓所有警告安靜下來,但它可能會隱藏 app 和相依套件中的重要資訊。

抑制特定警告

把會產生警告的程式碼包在一個抑制用的區塊裡:

def suppress_warnings 
original_verbose = $VERBOSE 
$VERBOSE = nil 
yield 
ensure 
$VERBOSE = original_verbose 
end 

suppress_warnings do 
require 'some_gem_with_warnings' 
end

使用情境:適合把警告隔離在特定的相依套件或程式碼區塊。

抑制 RSpec 警告

RSpec 內建了管理自身警告的設定。把這段加到你的 spec_helper.rb:

RSpec.configure do |config| 
config.warnings = false 
end

使用情境:只抑制 RSpec 本身的警告,同時保留 Ruby 和相依套件的警告。

把 deprecation 警告轉向

對於 deprecation 警告,可以把它們轉向到 log 檔以便日後檢視:

RSpec.configure do |config| 
config.deprecation_stream = File.open('log/rspec_deprecations.log', 'w') 
end

使用情境:保持測試輸出乾淨,同時仍能掌握 deprecation 的狀況。

依環境抑制警告

只在特定環境(例如 CI)抑制警告:

$VERBOSE = nil if ENV['SUPPRESS_WARNINGS'] == 'true'

使用情境:本機開發時保留警告,但在 CI 中隱藏,讓 log 更乾淨。

依照自身需求搭配這些做法,你就能讓測試輸出保持乾淨且可據以行動,提升開發和 CI 工作流程的生產力。

更多關於 ruby 的筆記

rubyApril 30, 2021

讓 Pry 支援貼上使用行首點記法的多行 Ruby 區塊

我們現在很常使用行首點記法,例如

rubyOctober 14, 2020

不含插值的 Heredoc

有時你會想使用 Ruby 的 Heredoc 但不進行插值('#{....}')。只要在你的關鍵字前後加上單引號就可以做到:

rubyOctober 13, 2020

在 Ruby 中自動建立中間層的 Hashtable

所有中間層的 hashtable 都會自動神奇地建立起來

有專案構想嗎?

我們很樂意聆聽您正在打造的產品。

開始對話hello@oozou.com
OOZOU Logo

曼谷 · 新加坡 · 香港

X
Facebook
Instagram
LinkedIn

服務

  • Web 開發
  • AI 代理人與生成式 AI
  • 行動應用開發
  • 數據分析與工程
  • UI/UX 與產品設計
  • 數位轉型

公司

  • 關於我們
  • 職涯
  • 部落格
  • 案例研究
  • Today I Learned
  • 聯繫我們

更多

  • 產業
  • 合作夥伴網絡
© 2026 OOZOU. 版權所有。
隱私政策行為準則反賄賂反貪腐政策