Saya ingin membuat proyek Ruby kecil dengan 10 ~ 20 kelas / file. Saya membutuhkan beberapa permata dan saya ingin menggunakan RSpec sebagai kerangka kerja pengujian.
Saya mungkin ingin membangun permata nanti, tapi itu belum pasti.
Adakah panduan atau petunjuk yang menunjukkan kepada saya bagaimana mengatur struktur dasar proyek saya?
Pertanyaan yang saya miliki adalah:
- Di mana saya meletakkan semua Kesalahan / Pengecualian kustom saya?
- Apakah ada beberapa konvensi di luar sana untuk penamaan direktori seperti lib, bin, src dll?
- Di mana saya meletakkan data atau dokumen uji?
- Di mana saya memerlukan semua file saya agar saya memiliki akses ke file tersebut dalam proyek saya?
Saya tahu saya bisa melakukan semuanya dari awal, tapi saya butuh bimbingan. Ada beberapa permata bagus di luar sana yang dapat saya salin, tetapi saya tidak yakin apa yang benar-benar saya butuhkan dan apa yang dapat saya hapus.
Saya melihat http://gembundler.com/ , tetapi berhenti setelah menyiapkan Bundler.
ruby
project-structure
ayckoster
sumber
sumber
Jawaban:
Untuk memulai dengan baik, Anda dapat menggunakan
bundle gem
perintah danrspec --init
.lib
spec
spec/fixtures/
lib/my_lib.rb
. Anda juga dapat menentukan pengecualian di file itu, atau di filenya sendiri - sesuai dengan preferensi Anda.ext/my_lib
bin
Jika ragu, lihat saja bagaimana permata lainnya ditata.
Informasi lebih lanjut:
Anda harus menambahkan rspec sebagai dependensi pengembangan di gemspec Anda untuk mempermudah pengembang lain
gem.add_development_dependency 'rspec'
dangem.add_development_dependency 'rake'
dekat bagian bawah.Bundler.setup
danrequire 'my_lib'
ke bagian atas spec / spec_helper.rb untuk memastikan dependensi gem Anda dimuat saat Anda menjalankan spesifikasi Anda.require "rspec/core/rake_task"
dantask :default => :spec
ke Rakefile Anda, sehinggarake
menjalankan spesifikasi Anda.Saat Anda mengerjakan kreasi terbaru Anda, guard-rspec dapat menghemat waktu dan kerumitan Anda dengan menjalankan spesifikasi Anda secara otomatis saat file berubah, mengingatkan Anda akan kegagalan spesifikasi.
Setelah Anda puas dengan kreasi Anda, dorong ke github
Kemudian, ketika Anda siap untuk merilis permata Anda di Rubygems.org, jalankan
rake release
, yang akan memandu Anda melalui langkah-langkahnya.Referensi Lebih Lanjut
sumber
-b, [--bin=Generate a binary for your library.]
denganbundle gem
.bundle gem <gem-name> -t
untuk melakukan hal yang samarspec --init
sekaligus.Ada beberapa panduan bagus di rubygems.org yang akan memperkenalkan Anda pada konvensi dan alasan di balik beberapa di antaranya. Secara umum, penamaan Rubygems dan konvensi direktori diikuti oleh sebagian besar pengembang Ruby.
Saya hanya akan membuat kelas pengecualian khusus jika saya tidak dapat menemukan kelas apa pun di perpustakaan standar yang sesuai dengan deskripsi kesalahan. Tempatkan kelas kesalahan Anda di bawah kelas atau modul yang memunculkannya:
Tes unit masuk ke
/test
, jika Anda menggunakanTest::Unit
, atau ke/spec
jika Anda menggunakanRSpec
. Saya merekomendasikan yang terakhir.Bundler
adalah cara terbaik untuk mengelola jalur pemuatan Anda. Ini akan secara otomatis mengatur lingkungan Anda dengan hanya ketergantungan yang ditentukan padaGemfile
dan secara opsionalgemspec
. Ini juga memungkinkan Anda untuk dengan mudahrequire
kode Anda tanpa menjadikannya permata.Namun, karena Anda mungkin membundel kode Anda dalam permata di masa mendatang, saya sarankan untuk menyelidiki cara membuat spesifikasi permata . Anda harus menulis spesifikasi Anda secara manual. Jangan gunakan beberapa alat untuk menghasilkannya secara otomatis - menurut pendapat saya, pendekatan brute force yang menduplikasi informasi secara tidak perlu dan mendatangkan malapetaka saat digunakan dengan kontrol sumber.
Saya membuat permata yang mungkin berguna bagi Anda. Diberikan sebuah
gemspec
file, itu mendefinisikan banyakRake
tugas berguna untuk bekerja dengan permata Anda, yang mencakup tugas untuk membangun, menginstal dan melepaskan permata Anda kerubygems
dangit
repositori dengan penandaan versi otomatis. Ini juga menyediakan cara mudah untuk memuat kode Anda dalam sesiirb
ataupry
.sumber
Berikut adalah konvensi yang paling sering saya lihat (dengan asumsi nama proyek Anda adalah "foo"):
Di dalam lib /, konvensi biasanya adalah membuat folder untuk setiap sub-namespace di dalam namespace tingkat atas Anda. Misalnya, kelas Foo :: Bar :: Baz biasanya ditemukan di bawah /lib/foo/bar/baz.rb.
Beberapa orang suka membuat file /lib/foo/version.rb hanya untuk menyetel konstanta Foo :: VERSION, tetapi sangat sering saya melihat ini didefinisikan di file /lib/foo.rb.
Selain itu, jika Anda membuat permata, Anda memerlukan file berikut:
sumber
Ada beberapa panduan di internet tentang cara menyusun proyek Ruby. Selain itu, menurut saya cara terbaik untuk mengatasi ini adalah menuju github dan mencari beberapa proyek Ruby yang terkenal, dan memeriksa struktur "mereka".
Selain persyaratan permata ruby umum, saya merekomendasikan alat berikut untuk alur kerja yang lebih baik:
package
: membangun paket permataclean
: file yang dihasilkan bersihtest
: uji cobaDan selain semua alat di atas, ada beberapa layanan online untuk proyek ruby:
Dan Anda bahkan dapat membuat lencana melalui http://shields.io/ untuk proyek sumber terbuka Anda.
Itulah pengalaman saya, semoga bisa membantu seseorang.
sumber