Bagaimana cara saya mengkonfigurasi RSpec secara global untuk mengaktifkan opsi '--color' dan '--format specdoc'?

156

Bagaimana cara mengatur konfigurasi global untuk RSpec di Ubuntu.

Khususnya, --color dan --format specdoc tetap dihidupkan, di semua proyek saya (yaitu setiap kali saya menjalankan rspec di mana saja).

Berkembang
sumber

Jawaban:

238

Seperti yang dapat Anda lihat di dokumen di sini , penggunaan yang dimaksud adalah membuat ~/.rspecdan di dalamnya menempatkan opsi Anda, seperti --color.

Untuk membuat ~/.rspecfile dengan cepat dengan --coloropsi, jalankan:

echo '--color' >> ~/.rspec 
abyx
sumber
17
--ttyjuga diperlukan jika Anda ingin warna bahkan ketika menggunakan pager.
Adam Spires
2
Apa pro / kontra untuk menggunakan .rspecatau spec_helper.rb? @shamaoke @christoph
Ian Vaughan
2
Satu keuntungan besar dari ~/.rspecsolusi ini adalah portabilitas. Misalnya server CI kami tidak menangani keluaran warna dengan sangat baik. Dengan file konfigurasi dir pengguna, kami dapat dengan mudah mengadopsi lingkungan yang berbeda.
Christoph Petschnig
2
Satu catatan lain yang relevan adalah bahwa Anda dapat membuat file .rspec pada tingkat proyek dan membuatnya berlaku hanya untuk proyek itu. Hanya berpikir beberapa mungkin ingin tahu itu di sini juga.
Nick Gronow
Memindahkan opsi konfigurasi saya dari spec_helper.rb ke .rspec menyelesaikan masalah ini untuk saya.
Edward Anderson
149

Satu juga dapat menggunakan spec_helper.rbfile di semua proyek. File tersebut harus mencakup yang berikut:

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

File contoh apa pun harus mengharuskan penolong untuk dapat menggunakan opsi itu.

Shamaoke
sumber
1
Pertanyaan aslinya meminta konfigurasi global, ini adalah pertanyaan spesifik proyek. Berguna, tetapi bukan jawaban yang benar, tidak seperti abyx yang menunjuk ke .rspecfile.
Olivier Lacan
8
Pencarian untuk info tentang konfigurasi RSpec dan formaters membawa satu ke halaman ini, jadi saya menghargai jawaban ini, bahkan jika itu untuk pertanyaan yang salah :-)
phatmann
3
color_enabledsekarangcolor
elado
12

Dalam spec_helper.rbfile Anda , sertakan opsi berikut:

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

Anda kemudian harus meminta di setiap *_spec.rbfile yang harus menggunakan opsi itu.

Christoph Petschnig
sumber
Hai, terima kasih - dapatkah Anda menguraikan hal-hal berikut: "Anda harus meminta di setiap file * _spec.rb yang harus menggunakan opsi itu." Saya tidak mengerti.
BKSpurgeon
Setiap file * _spec.rb Anda biasanya dimulai dengan memerlukan "spec_helper", Anda tidak boleh melupakan ini.
Christoph Petschnig
6

Jika Anda menggunakan rake untuk menjalankan tes rspec maka Anda dapat mengedit spec / spec.opts

http://rspec.info/rails/runners.html

fernyb
sumber
9
./spec.opts telah dihapuskan. Rails 3 ingin file tersebut dinamai ./.rspec atau ~ / .rspec
Aaron Wheeler
2

Atau cukup tambahkan alias spec=spec --color --format specdocke file ~ / .bashrc Anda seperti saya.

kebun binatang
sumber
5
Solusi ini tidak terlalu portabel. Jawaban yang benar adalah @abyx dengan menggunakan .rspec, seperti ketika diperiksa dengan proyek, siapa pun yang mendapatkannya akan mendapatkan pengaturan yang sama.
Ian Vaughan
1
Tetapi pertanyaannya adalah tentang "konfigurasi global untuk RSpec di Ubuntu", "di semua proyek saya" bukan mode portabel atau koperasi.
zzeroo
3
Humm, saya kira Anda benar, jawaban Anda memang berhubungan langsung dengan OP. Saya berpikir gambaran yang lebih besar, tapi saya masih berpikir jawaban yang lebih baik adalah @abyx, jika OP terbiasa untuk mengkonfigurasi proyek dengan benar maka orang lain akan mendapat manfaat, mungkin tidak sekarang karena dia mungkin bekerja solo, tetapi praktik yang baik hanya itu. Maaf, agak ranty, hanya cara berpikir saya.
Ian Vaughan
1
@zzeroo @Ian: Perhatikan bahwa meletakkan .rspecfile di direktori home pengguna (seperti yang saya sebutkan dalam jawaban saya) berfungsi secara global untuk semua permintaan pengguna rspec. Itu sebenarnya lebih solid daripada menggunakan alias, karena beberapa permata / alias / alat lain yang mungkin digunakan pengguna tidak harus menggunakan alias
abyx
1
Sekarang kembali ke pertanyaan ini dan menjadi sedikit lebih tua dan lebih bijaksana, saya akan setuju bahwa pengaturan file dot .rspec sekarang menjadi pilihan yang lebih baik. Memperbarui jawaban yang disetujui saya ke abyx, terima kasih banyak zzero untuk menjawab pertanyaan saya yang terbaik di tahun 2010. :)
Evolve
1

Satu hal yang harus diperhatikan adalah dampak dari berbagai cara menjalankan RSpec.

Saya mencoba mengaktifkan opsi dengan kode berikut di spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. memanggil biner 'rspec' secara langsung - atau sebagai 'bundle exec rspec' dan memeriksa $ stdout.tty? akan mengembalikan true.
  2. menjalankan tugas 'rake spec' - atau sebagai 'bundle exec rake spec' - Rake akan memanggil rspec dalam proses terpisah, dan $ stdout.tty? akan kembali salah.

Pada akhirnya saya menggunakan opsi ~ / .rspec, dengan hanya --tty sebagai isinya. Bekerja dengan baik untuk saya dan menjaga output server CI kami bersih.

Leif
sumber