Apa arti ~>
persyaratan versi dalam spesifikasi permata?
hanna-0.1.12 tergantung pada [haml (~> 2.2.8)]
Apa arti ~>
persyaratan versi dalam spesifikasi permata?
hanna-0.1.12 tergantung pada [haml (~> 2.2.8)]
Jawaban:
Manual RubyGems menyebutnya sebagai batasan versi pesimistis .
Asumsikan Anda telah menentukan nomor versi n-bagian, misalnya 1.3
(2-bagian) atau
3.5.6.2
(4-bagian) sebagai batasan. Kemudian, untuk memenuhi batasan, nomor versi harus memenuhi kedua kondisi berikut
N-1 bagian pertama dari nomor versi harus identik dengan n-1 bagian pertama dari batasan (misalnya 1.x
atau 3.5.6.x
cocok, tetapi 0.x
atau 3.5.7.x
tidak) dan
Bagian terakhir dari nomor versi harus lebih besar dari atau sama dengan bagian terakhir dari batasan (misalnya 1.9999
dan 3.5.6.2
cocok, tetapi 1.2
atau 3.5.6.1
tidak).
Dengan kata lain
~> x 1 .x 2 .x 3 . … .X n-2 .x n-1 .x n
korek api
x 1 .x 2 .x 3 . … .X n-2 .x n-1 .y, y> = x n
Alasan mengapa hal ini disebut kendala "pesimis", dan juga kasus penggunaannya, adalah karena ketika Anda mengatakan > x.y.z
, Anda sedang optimis: Anda berasumsi bahwa mulai saat ini, hingga selama-lamanya, API tidak akan pernah berubah. Ini tentu saja asumsi yang cukup berani. Namun, sebagian besar proyek memiliki aturan tentang kapan mereka diizinkan untuk
merusak kompatibilitas mundur , dan bagaimana mereka harus mengubah nomor versinya ketika mereka benar - benar merusak kompatibilitas mundur. Anda dapat mengenkode aturan penomoran versi tersebut menggunakan batasan pesimistis, dan dengan demikian Anda dapat yakin bahwa kode Anda akan selalu berfungsi (dengan asumsi bahwa pembuat proyek lain benar-benar mematuhi aturannya sendiri, yang sayangnya tidak selalu terjadi. ).
Dengan kata lain, Anda dapat menggunakan simbol ini untuk terus memperbarui permata Anda dengan semua pembaruan kecil dan menghindari membuat pembaruan besar yang dapat merusak aplikasi Anda.
Misalnya "~> 1.2" akan memperbarui permata Anda ke 1.3 (jika versi seperti itu dirilis) tetapi tidak akan memperbaruinya ke 2.0
Saya pikir dokumen bundler paling baik merangkumnya:
Penentu ~> memiliki arti khusus, paling baik ditunjukkan dengan contoh. ~> 2.0.3 identik dengan> = 2.0.3 dan <2.1. ~> 2.1 identik dengan> = 2.1 dan <3.0. ~> 2.2.beta akan cocok dengan versi prarilis seperti 2.2.beta.12.
Ini cocok dengan versi apa pun yang memiliki bagian mayor / minor yang sama. Ini berarti dalam hal ini haml ~> 2.2.8 akan cocok dengan versi 2.2.x mana pun.
Ini dapat digunakan untuk memastikan bahwa perubahan yang merusak API di permata baru, tidak mengakibatkan bergantung pada permata yang baru tetapi diubah yang akan merusak hanna dalam kasus ini.
~> 2.0
dan ~> 2.0.0
- pertandingan sebelumnya 2.0, 2.1, 2.2.7, dan yang lainnya hingga (tetapi tidak termasuk) 3.0. Yang terakhir cocok dengan 2.0, 2.0.1, 2.0.999, dan yang lainnya hingga (tetapi tidak termasuk) 2.1.
~> 2.2.8
akan cocok dengan versi "2.2.x" seperti yang diklaim jawaban, tetapi hanya versi 2.2.x dengan x ≥ 8. IOW: jawabannya paling-paling bahkan lebih tidak lengkap, berbatasan dengan salah dan pasti menyesatkan.