Tôi gần đây đã cập nhật Ruby và nâng cấp vài dự án. Và khi làm đó, tôi tìm thấy một số tính năng RubyGems khá cool mà tôi không biết trước:
Khi executable của bạn bị lỗi thời
Tôi dùng dùng rvm để quản lý phiên bản Ruby. Nhưng lần cuối thiết lập máy, tôi quyết định thử không dùng nó. Bạn không cần Gemsets khi bạn có Bundler, và bạn có thể dùng Homebrew để giữ Ruby cập nhật.
Điều này hoạt động tốt, cho đến khi bạn cập nhật Ruby. Và rails new, bundle install và tất cả lệnh khác hỏng. Chúng sẽ trỏ đến phiên bản Ruby cũ, không phải cái bạn vừa cài.
Bạn có thể sửa bằng cách uninstall và reinstall từng gem một. Nhưng đó chỉ điên rồ. Thay vào đó, hãy thử gem pristine:
gem pristine --all --only-executables
gem pristine lấy một gem, và reset nó về phiên bản bạn tải về ban đầu. Nó giống như uninstall và reinstall gem. (Điều này cũng hữu ích nếu bạn quyết định chỉnh sửa gem khi debug, và quên đổi lại.)
--all nghĩa là "tất cả gem", và --only-executables nghĩa là "chỉ reset file như /usr/local/bin/rails và /usr/local/bin/bundle". Nghĩa là, chỉ sửa script bạn dùng để chạy gem từ dòng lệnh.
Vì vậy lệnh này reset file như /usr/local/bin/rails về thứ chúng sẽ là nếu bạn uninstall và reinstall gem.
Một phút sau, bạn sẽ quay lại làm việc trên ứng dụng.
Khi bạn cần phiên bản cũ
Khi tôi viết bài về respond_to, tôi tạo một vài ứng dụng nhỏ để học thêm về nó. Tôi dùng vài phiên bản Rails khác nhau để xem mỗi phiên bản xử lý respond_to và respond_with như thế nào.
Làm sao bạn generate mỗi ứng dụng Rails với phiên bản Rails đúng? Bạn không phải làm này:
gem install rails -v 4.0.0 rails new respond_to_4.0 gem uninstall rails gem install rails -v 4.1.0 rails new respond_to_4.1 gem uninstall rails
Có cách dễ dàng hơn. Bạn có thể nói cho RubyGems phiên bản nào bạn muốn chạy, ngay trên dòng lệnh, với dấu gạch dưới:
rails _4.0.0_ new respond_to_4.0 rails _4.1.0_ new respond_to_4.1
Phiên bản gem mờ
Nhưng ở phần cuối, vẫn còn vấn đề. Bạn có thể không thực sự muốn cài 4.0.0. Bạn muốn phiên bản mới nhất của 4.0, với tất cả cập nhật minor.
Nhưng bạn nhớ phiên bản minor mới nhất của Rails 4.0 là gì?
Có nhiều cách tra cứu. Nhưng tại sao tra cứu, khi RubyGems có thể chỉ làm những gì bạn muốn?
gem install rails -v "~>4.0.0"
Bạn có thể dùng tất cả chuỗi phiên bản bạn biết từ Bundler:
gem install rails -v ">3.1, <4.1"
Hữu ích! Đặc biệt nếu, như tôi, bạn ghét làm việc máy tính giỏi hơn.
Nhưng bạn không phải biết tất cả này
Khi tôi gặp những vấn đề này, tôi không biết có câu trả lời dễ dàng. Nhưng bạn có thể đoán chắc sẽ có một.
Đây đều là tình huống bạn có thể tự giải quyết, nhưng nó lặp lại và phiền toái.
Và khi bạn tìm thấy tác vụ lặp lại, phiền toái như này, đặc biệt trong dự án được dùng nhiều, nó có nghĩa là một trong hai điều:
- Ai đó đã tự động hóa nó, hoặc
- Nhiều người đang hy vọng bạn sẽ tự động hóa nó.
Vì vậy trước khi bạn làm việc bùi nhùi, hãy đào sâu hơn một chút. Điều tra một chút. Nó sẽ đáng giá thời gian của bạn.
Bài đăng này ban đầu được gửi độc quyền cho danh sách của tôi. Để nhận thêm bài đăng như thế trong inbox mỗi thứ Sáu, đăng ký ở đây!