OOZOU
ติดต่อเรา
กลับไปหน้า TIL
ruby

ปิด warning ของ rspec

13 ตุลาคม 2563
$ RUBYOPT=W0 ./bin/rspec spec/
...

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

$ RUBYOPT=W0 rspec
...

$ RUBYOPT=W0 ...
...

warning ของ RSpec อาจทำให้ผลลัพธ์ของ test รกและอ่าน log ยากขึ้น โดยเฉพาะในโปรเจกต์ Rails ขนาดใหญ่ นี่คือวิธีปิด warning อย่างได้ผลโดยยังคง workflow ที่สะอาดไว้

ปิด warning แบบ global

คุณสามารถปิด warning ของ test suite ทั้งหมดได้โดยเพิ่มบรรทัดต่อไปนี้ใน spec_helper.rb หรือ rails_helper.rb:

$VERBOSE = nil

Use Case: เหมาะสำหรับปิด warning ทั้งหมดอย่างรวดเร็ว แต่ก็อาจซ่อนข้อมูลสำคัญทั้งในแอปและ dependency ของคุณ

ปิด warning แบบเฉพาะจุด

ครอบโค้ดที่สร้าง warning ด้วย block สำหรับปิด warning:

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

suppress_warnings do 
require 'some_gem_with_warnings' 
end

Use Case: มีประโยชน์เมื่อต้องการจำกัด warning ให้อยู่เฉพาะบาง dependency หรือบางส่วนของโค้ด

ปิด warning ของ RSpec

RSpec มี configuration ในตัวสำหรับจัดการ warning ของมันเอง เพิ่มโค้ดนี้ใน spec_helper.rb ของคุณ:

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

Use Case: ปิด warning ที่มาจาก RSpec โดยเฉพาะ แต่ยังเห็น warning ของ Ruby และ dependency อยู่

Redirect warning ประเภท deprecation

สำหรับ deprecation warning ให้ redirect ไปเก็บในไฟล์ log เพื่อไว้ตรวจดูทีหลัง:

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

Use Case: ทำให้ผลลัพธ์ของ test สะอาด แต่ยังตามดู deprecation ได้อยู่

ปิด warning เฉพาะบาง environment

ปิด warning เฉพาะใน environment ที่กำหนด เช่น CI:

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

Use Case: ยังเห็น warning ระหว่างพัฒนาบนเครื่องตัวเอง แต่ซ่อนไว้ใน CI เพื่อให้ log สะอาดขึ้น

ปรับแนวทางเหล่านี้ให้เข้ากับความต้องการของคุณ แล้วผลลัพธ์ของ test จะสะอาดและนำไปใช้ต่อได้จริง ช่วยเพิ่ม productivity ทั้งในการพัฒนาและใน workflow ของ CI

เพิ่มเติมเกี่ยวกับ ruby

ruby30 เมษายน 2564

ทำให้วางโค้ด Ruby หลายบรรทัดใน Pry ได้เมื่อใช้ leading dot notation

ตอนนี้เราใช้ leading dot notation กันบ่อยมาก เช่น

ruby14 ตุลาคม 2563

Heredoc แบบไม่มี interpolation

บางครั้งคุณอาจอยากใช้ Heredoc ของ Ruby แบบไม่มี interpolation ('#{....}') ซึ่งทำได้โดยใส่ dash เดี่ยวรอบ keyword ของคุณ:

ruby13 ตุลาคม 2563

สร้าง hashtable ระดับกลางให้อัตโนมัติใน Ruby

hashtable ระดับกลางทั้งหมดจะถูกสร้างขึ้นให้เองโดยอัตโนมัติ

มีโปรเจกต์ในใจ?

เรายินดีรับฟังสิ่งที่คุณกำลังสร้าง

เริ่มต้นสนทนาhello@oozou.com
OOZOU Logo

กรุงเทพฯ · สิงคโปร์ · ฮ่องกง

X
Facebook
Instagram
LinkedIn

บริการ

  • พัฒนาเว็บ
  • เอเจนต์ AI และ Generative AI
  • พัฒนาแอปมือถือ
  • วิศวกรรมและวิเคราะห์ข้อมูล
  • UI/UX และการออกแบบผลิตภัณฑ์
  • การเปลี่ยนผ่านสู่ดิจิทัล

บริษัท

  • เกี่ยวกับเรา
  • ร่วมงานกับเรา
  • บล็อก
  • กรณีศึกษา
  • Today I Learned
  • ติดต่อเรา

เพิ่มเติม

  • อุตสาหกรรม
  • เครือข่ายพันธมิตร
© 2026 OOZOU สงวนลิขสิทธิ์
นโยบายความเป็นส่วนตัวจรรยาบรรณนโยบาย ABAC