ฉันจะกำหนดค่า RSpec ทั่วโลกให้เปิดตัวเลือก '--color' และ '--format specdoc' ได้อย่างไร


156

ฉันจะตั้งค่าส่วนกลางสำหรับ RSpec ใน Ubuntu ได้อย่างไร

โดยเฉพาะดังนั้น --color และ - รูปแบบ specdoc จะยังคงเปิดอยู่ตลอดโครงการของฉัน (เช่นทุกครั้งที่ฉันเรียกใช้ rspec ทุกที่)

คำตอบ:


238

ที่คุณสามารถดูในเอกสารที่นี่ที่ตั้งใจใช้คือการสร้างและในนั้นใส่ตัวเลือกของคุณเช่น~/.rspec--color

หากต้องการสร้าง~/.rspecไฟล์อย่างรวดเร็วด้วย--colorตัวเลือกให้เรียกใช้:

echo '--color' >> ~/.rspec 

17
--ttyเป็นสิ่งจำเป็นหากคุณต้องการสีแม้ในขณะที่ใช้วิทยุติดตามตัว
Adam Spires

2
ข้อดี / ข้อเสียของการใช้.rspecหรือspec_helper.rbอะไร @shamaoke @christoph
Ian Vaughan

2
ข้อดีอย่างหนึ่งของการ~/.rspecแก้ปัญหาคือการพกพา เช่นเซิร์ฟเวอร์ CI ของเราไม่สามารถจัดการกับสีได้ดี ด้วยไฟล์ผู้ใช้ dir config เราสามารถนำไปใช้กับสภาพแวดล้อมที่แตกต่างกันได้อย่างง่ายดาย
Christoph Petschnig

2
หมายเหตุที่เกี่ยวข้องอีกประการหนึ่งคือคุณสามารถสร้างไฟล์. rspec ในระดับโครงการและนำไปใช้กับโครงการนั้นได้ แค่คิดว่าบางคนอาจต้องการที่จะรู้ว่าที่นี่เช่นกัน
Nick Gronow

การย้ายตัวเลือกการกำหนดค่าของฉันจาก spec_helper.rb เป็น. rspec สามารถแก้ไขปัญหานี้ให้ฉันได้
Edward Anderson

149

ท่านสามารถใช้spec_helper.rbไฟล์ในทุกโครงการ ไฟล์ควรมีสิ่งต่อไปนี้:

RSpec.configure do |config|
  # Use color in STDOUT
  config.color = true

  # Use color not only in STDOUT but also in pagers and files
  config.tty = true

  # Use the specified formatter
  config.formatter = :documentation # :progress, :html,
                                    # :json, CustomFormatterClass
end

ไฟล์ตัวอย่างใด ๆ จะต้องกำหนดให้ผู้ช่วยสามารถใช้ตัวเลือกนั้นได้


1
คำถามเดิมถามถึงการกำหนดค่าทั่วโลกนี่เป็นคำถามเฉพาะโครงการ มีประโยชน์ แต่ไม่ใช่คำตอบที่ถูกต้องซึ่งแตกต่างจาก abyx ซึ่งชี้ไปที่.rspecไฟล์
Olivier Lacan

8
การค้นหาข้อมูลเกี่ยวกับการกำหนดค่า RSpec และตัวจัดรูปแบบนำมาไว้ที่หน้านี้ดังนั้นฉันจึงชื่นชมคำตอบนี้แม้ว่าจะเป็นคำถามที่ผิด :-)
phatmann

3
color_enabledได้แล้วตอนนี้color
elado

12

ในspec_helper.rbไฟล์ของคุณรวมถึงตัวเลือกต่อไปนี้:

RSpec.configure do |config|
  config.color_enabled = true
end

จากนั้นคุณต้องกำหนดให้แต่ละ*_spec.rbไฟล์ที่ควรใช้ตัวเลือกนั้น


สวัสดีขอบคุณ - คุณจะสามารถอธิบายรายละเอียดต่อไปนี้ได้: "คุณต้องกำหนดไฟล์ * _spec.rb แต่ละไฟล์ที่ควรใช้ตัวเลือกนั้น" ฉันไม่เข้าใจ
BKSpurgeon

ไฟล์ * _spec.rb แต่ละไฟล์ของคุณมักเริ่มต้นด้วย "spec_helper" โดยที่คุณไม่ควรลืม
Christoph Petchnig


2

หรือเพิ่มalias spec=spec --color --format specdocไฟล์ ~ / .bashrc ของคุณอย่างฉัน


5
โซลูชันนี้ไม่สามารถพกพาได้มาก คำตอบที่ถูกต้องคือ @abyx เมื่อใช้.rspecเช่นเดียวกับเมื่อเช็คอินกับโครงการใครก็ตามที่ได้รับมันจะได้รับการตั้งค่าเดียวกัน
Ian Vaughan

1
แต่คำถามเกี่ยวกับ "การกำหนดค่าทั่วโลกสำหรับ RSpec ใน Ubuntu", "ในทุกโครงการของฉัน" ไม่ใช่โหมดพกพาหรือสุ่ม
zzeroo

3
Humm ฉันเดาถูกแล้วคำตอบของคุณเกี่ยวข้องโดยตรงกับ OP ฉันคิดภาพใหญ่ขึ้น แต่ฉันก็ยังคิดว่าคำตอบที่ดีกว่าคือ @abyx หาก OP คุ้นเคยกับการกำหนดค่าโครงการอย่างถูกต้องแล้วคนอื่น ๆ จะได้รับประโยชน์บางทีตอนนี้เขาอาจจะไม่ได้ทำงานเดี่ยว แต่การปฏิบัติที่ดี ขอโทษที่ทำให้ฉันคิด
เอียนวอห์น

1
@zzeroo @Ian: โปรดทราบว่าการวาง.rspecไฟล์ในโฮมไดเร็กตอรี่ของผู้ใช้ (ดังที่ฉันได้กล่าวไว้ในคำตอบของฉัน) ทำงานได้ทั่วโลกสำหรับการเรียกใช้ rspec ทั้งหมดของผู้ใช้ ในความเป็นจริงแล้วแข็งกว่าการใช้นามแฝงเนื่องจากอัญมณี / เครื่องมือ / นามแฝงอื่น ๆ ที่ผู้ใช้อาจใช้ไม่จำเป็นต้องใช้นามแฝง
abyx

1
ตอนนี้กลับมาที่คำถามนี้และเมื่อโตขึ้นและฉลาดขึ้นฉันจะเห็นด้วยว่าการตั้งค่าไฟล์. rspec dot เป็นตัวเลือกที่ดีกว่า การอัปเดตคำตอบที่ได้รับการอนุมัติของฉันไป abyx ขอบคุณดังนั้น zzero มากสำหรับการตอบคำถามกลับของฉันดีที่สุดในปี 2010 :)
วิวัฒนาการ

1

สิ่งหนึ่งที่ควรระวังคือผลกระทบของวิธีต่างๆในการใช้ RSpec

ฉันพยายามที่จะเปิดตัวเลือกด้วยรหัสต่อไปนี้ใน spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. โทรไบนารี 'rspec' โดยตรง - หรือเป็น 'bundle exec rspec' และตรวจสอบ $ stdout.tty? จะกลับมาจริง
  2. เรียกใช้งาน 'rake spec' - หรือเป็น 'bundle exec rake spec' - Rake จะเรียก rspec ในกระบวนการที่แยกต่างหากและ $ stdout.tty? จะกลับเท็จ

ในที่สุดฉันใช้ตัวเลือก ~ / .rspec โดยใช้เพียง --tty เป็นเนื้อหา ทำงานได้ดีสำหรับฉันและทำให้เซิร์ฟเวอร์ CI ของเราสะอาด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.