2012-07-06 23 views

Trả lời

5

Tôi thích tất cả đá quý của mình bị khóa với phiên bản cụ thể trong quá trình sản xuất. Xem xét có thể có các phiên bản mới hơn phá vỡ tính tương thích với các đá quý khác hoặc không sử dụng một số API, bạn muốn chắc chắn 100% rằng bạn sẽ không nhận được ứng dụng bị hỏng đáng ngạc nhiên khi triển khai vì không nhất quán về đá quý. Việc cập nhật gem chỉ nên được thực hiện cục bộ trong phát triển, bằng cách cập nhật các mục Gemfile của chúng và kiểm tra từng phiên bản mới so với phần còn lại của mã và thư viện của bạn.

+0

Ngoài ra, đôi khi có trường hợp ngược lại phải lấy phiên bản mới nhất có sẵn trên nguồn, bởi vì nó chứa bản sửa lỗi rất cần thiết không có trong các bản phát hành được đánh số. (đã xảy ra với will_paginate tại một thời điểm) – prusswan

2

Nói chung, bạn không cần phải trừ khi được hướng dẫn làm như vậy (hoặc bởi tác giả đá quý hoặc phản hồi từ người dùng do không tương thích). Đôi khi bạn có thể sử dụng phiên bản cạnh của đá quý nhất định để nó không quan trọng anyway:

# Bundle edge Rails instead: 
gem 'rails', :git => 'git://github.com/rails/rails.git' 
gem 'arel', :git => 'git://github.com/rails/arel.git' 
gem "rack", :git => "git://github.com/rack/rack.git" 
1

Tôi không nghĩ rằng bạn nên xác định phiên bản của mỗi viên ngọc, kể từ phiên bản của đá quý làm việc hiện tại đã quy định tại Gemfile.lock .

Ngoài ra nếu bạn làm như vậy, lệnh bundle update sẽ vô ích. Bạn sẽ có thể sử dụng lệnh này để cập nhật các gem. nếu các bài kiểm tra vượt qua và đơn đăng ký của bạn tiếp tục hoạt động đúng cách, chỉ cần cam kết Gemfile.lock

+0

'Gemfile.lock' được tạo hoàn toàn từ các quy tắc được chỉ định trong' Gemfile' và 'gói cập nhật' cuối cùng, vì vậy chỉ có' ​​Gemfile' được xem xét, bất kể phiên bản được chỉ định hay không. – prusswan

+0

đó là những gì tôi đang nói quá ... Bạn không nên chỉ định phiên bản của từng viên đá quý để cập nhật gói 'có thể cập nhật một số trong số chúng –

Các vấn đề liên quan