Cách sử dụng ~> và >= trong Gemfile
Khi bạn muốn kiểm soát tốt hơn version của các gem mình đang sử dụng, thì việc hiểu được ý nghĩa của các kí hiệu trong Gemfile là thực sự cần thiết. Bạn sẽ thường thấy một số cách dùng sau trong Gem file:
gem "turbo-rails" # luôn lấy phiên bản mới nhất
gem "puma", "~> 5.0" # tương đương với lấy các phiên bản >= 5.0 và < 6.0
gem "sqlite3", ">= 1.4" # Tất cả các phiên bản lớn hơn 1.4 đều được
Version của một gem được đặt như thế nào
Thông thường bạn sẽ thấy 3 con số 0.0.0
mỗi 1 số đại điện cho:
- PATCH 0.0.x Một số thay đổi nhỏ, ví dụ như fix một bug.
- MINOR 0.x.0 Các thay đổi về API, như là thêm chức năng/tính năng mới.
- MAJOR x.0.0 Các thay đổi lớn về API có thể khiến người đang sử dụng gem bị lỗi nếu thay đổi.
Ruby's Pessimistic Operator
Ruby's Pessimistic Operator chính là kí hiệu được dùng ở trên, và nó còn một cái tên khác là twiddle-wakka nếu bạn cần từ khóa để tìm hiểu thêm.
~>
Cùng xem ví dụ sau:
gem "puma", "~> 5.0" # tương đương với lấy các phiên bản >= 5.0 và < 6.0
gem "puma", "~> 5.0.0" # tương đương với lấy các phiên bản >= 5.0.0 và < 5.1.0
Với gem "puma", "~> 5.0"
bạn bỏ qua patch version thì khi bundle, bạn sẽ lấy version mới nhất của puma
trong khoảng >= 5.0
và < 6.0
Với gem "puma", "~> 5.0.0"
thì khi bundle, bạn sẽ lấy version mới nhất của puma
trong khoảng >= 5.0.0
và < 5.1.0
Đây cũng là điều bạn cần chú ý khi sử dụng.