Làm cách nào để tôi định cấu hình RSpec trên toàn cầu để giữ các tùy chọn '--color' và '--format specdoc' được bật


156

Làm cách nào để đặt cấu hình toàn cầu cho RSpec trong Ubuntu.

Cụ thể là như vậy, - color và --format specdoc vẫn bật, trên tất cả các dự án của tôi (tức là mỗi khi tôi chạy rspec ở bất cứ đâu).

Câu trả lời:


238

Như bạn có thể thấy trong các tài liệu ở đây , mục đích sử dụng đang tạo ~/.rspecvà trong đó đưa các tùy chọn của bạn, chẳng hạn như --color.

Để nhanh chóng tạo một ~/.rspectệp với --colortùy chọn, chỉ cần chạy:

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

17
--ttycũng được yêu cầu nếu bạn muốn màu ngay cả khi sử dụng máy nhắn tin.
Adam Spiers

2
Những ưu / nhược điểm khi sử dụng .rspechay spec_helper.rb? @shamÓA @christoph
Ian Vaughan

2
Một lợi thế lớn của ~/.rspecgiải pháp là tính di động. Ví dụ, máy chủ CI của chúng tôi không xử lý đầu ra màu rất tốt. Với tệp cấu hình thư mục người dùng, chúng ta có thể dễ dàng chấp nhận các môi trường khác nhau.
Christoph Thúchnig

2
Một lưu ý liên quan khác là bạn có thể tạo tệp .rspec ở cấp độ dự án và áp dụng nó cho dự án đó. Chỉ cần nghĩ rằng một số có thể muốn biết rằng ở đây là tốt.
Nick Gronow

Di chuyển các tùy chọn cấu hình của tôi từ spec_helper.rb sang .rspec đã giải quyết vấn đề này cho tôi.
Edward Anderson

149

Người ta cũng có thể sử dụng một spec_helper.rbtập tin trong tất cả các dự án. Các tập tin nên bao gồm những điều sau đây:

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

Bất kỳ tệp ví dụ nào cũng phải yêu cầu người trợ giúp có thể sử dụng các tùy chọn đó.


1
Câu hỏi ban đầu yêu cầu cấu hình toàn cầu, đây là một câu hỏi dành riêng cho dự án. Hữu ích, nhưng không phải là câu trả lời chính xác, không giống như abyx chỉ vào .rspectệp.
Olivier Lacan

8
Tìm kiếm thông tin về cấu hình và trình định dạng RSpec mang một đến trang này, vì vậy tôi đánh giá cao câu trả lời này, ngay cả khi đó là câu hỏi sai :-)
phatmann

3
color_enabledbây giờcolor
elado

12

Trong spec_helper.rbtệp của bạn , bao gồm các tùy chọn sau:

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

Sau đó, bạn phải yêu cầu trong mỗi *_spec.rbtệp nên sử dụng tùy chọn đó.


Xin cảm ơn - bạn có thể giải thích rõ hơn về vấn đề sau: "Sau đó, bạn phải yêu cầu trong mỗi tệp * _spec.rb nên sử dụng tùy chọn đó." tôi không hiểu
BKSpurgeon

Mỗi tệp * _spec.rb của bạn thường bắt đầu bằng yêu cầu "spec_helper", bạn không nên quên điều này.
Christoph Thúchnig


2

Hoặc chỉ cần thêm alias spec=spec --color --format specdocvào tệp ~ / .bashrc của bạn như tôi.


5
Giải pháp này không phải là rất di động. Câu trả lời đúng là @abyx với việc sử dụng .rspec, vì khi đăng ký với dự án, bất kỳ ai khác nhận được nó cũng sẽ nhận được các cài đặt tương tự.
Ian Vaughan

1
Nhưng câu hỏi là về "cấu hình toàn cầu cho RSpec trong Ubuntu", "trên tất cả các dự án của tôi" không phải là chế độ di động hay coop.
zzeroo

3
Humm, tôi đoán đúng của bạn, câu trả lời của bạn không liên quan trực tiếp đến OP. Tôi đã suy nghĩ bức tranh lớn hơn, nhưng tôi vẫn nghĩ câu trả lời tốt hơn là @abyx, nếu OP được sử dụng để cấu hình các dự án một cách chính xác thì những người khác sẽ được hưởng lợi, có thể không phải bây giờ vì anh ta có thể làm việc một mình, nhưng thực tế tốt chỉ là như vậy. Xin lỗi, hơi giận dữ, chỉ là cách nghĩ của tôi.
Ian Vaughan

1
@zzeroo @Ian: Lưu ý rằng việc đặt .rspectệp vào thư mục chính của người dùng (như tôi đã đề cập trong câu trả lời của tôi) hoạt động trên toàn cầu cho tất cả các yêu cầu của người dùng về rspec. Thực tế đó là vững chắc hơn so với sử dụng bí danh, vì một số đá quý / bí danh / công cụ khác mà người dùng có thể sử dụng sẽ không nhất thiết phải sử dụng bí danh
abyx

1
Bây giờ trở lại câu hỏi này và già hơn một chút và khôn ngoan hơn, tôi đồng ý rằng việc đặt tệp chấm .rspec bây giờ là một lựa chọn tốt hơn. Cập nhật câu trả lời được chấp thuận của tôi cho abyx, cảm ơn rất nhiều zzero vì đã trả lời câu hỏi của tôi tốt nhất vào năm 2010 :)
Phát triển

1

Một điều cần lưu ý là tác động của các cách chạy RSpec khác nhau.

Tôi đã cố gắng bật tùy chọn với đoạn mã sau trong spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. gọi trực tiếp nhị phân 'rspec' - hoặc là 'bundle exec rspec' và kiểm tra $ stdout.tty? sẽ trở về đúng
  2. gọi nhiệm vụ 'rake spec' - hoặc như 'bundle exec rake spec' - Rake sẽ gọi rspec trong một quy trình riêng biệt và $ stdout.tty? sẽ trả lại sai.

Cuối cùng, tôi đã sử dụng tùy chọn ~ / .rspec, với chỉ --tty là nội dung của nó. Hoạt động tốt cho tôi và giữ đầu ra máy chủ CI của chúng tôi sạch sẽ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.