2013-03-26 17 views
10

Tôi đã gặp phải một tình huống ngày hôm nay khi một viên ngọc được sử dụng trong một ứng dụng mà tôi đang duy trì được kéo mạnh.Tại sao có quá nhiều Gems bị giật mạnh và bạn làm gì về phụ thuộc?

Tôi chưa từng nhìn thấy một viên đá quý được kéo mạnh trước đây, mặc dù tôi đã nghe nói về nó, và nghĩ rằng đó là một thực tế không tốt.

Tôi đã thử cập nhật các đá quý, nhưng ứng dụng bắt đầu không thành công khi sử dụng các phiên bản cũ hơn hoặc cũ hơn.

Xem đá quý được lưu trữ tự do và có thể được sử dụng bởi các ứng dụng, logic trong việc lồng ghép chúng là gì? Làm thế nào để bạn quản lý đá quý đã được kéo mạnh?

Trả lời

9

Đối với mỗi đá quý bạn quyết định sử dụng trên dự án của bạn, bạn nên có một ideia của một thay thế (hoặc đá quý khác hoặc thực hiện của riêng bạn). Tôi thấy mọi người sử dụng đá quý bắt buộc mà không quan tâm đến chất lượng, tác giả, tần suất cập nhật. Nó là nguy hiểm để được mù quáng tùy thuộc vào một viên ngọc và quyết định thêm một dòng khác để Gemfile không nên được đưa nhẹ.

Liên quan đến đá quý, nếu ngay cả các tác giả loại bỏ các đá quý từ interwebz bạn có lẽ nên suy nghĩ về làm tương tự với nó trên dự án của bạn. Điều đó hoặc nếu bạn thực sự yêu thích đá quý, lưu trữ một ngã ba, cung cấp tín dụng và tiếp tục phát triển nó. :)

+5

+ 1 cho "lưu trữ một ngã ba" –

4

Rubygem's doc cho thấy giật là ở đây để:

  • sửa chữa push ngẫu nhiên của các phiên bản đầy đủ
  • ngăn chặn người dùng từ cluelessly kéo một viên ngọc đã được biết đến vấn đề an ninh

tôi chưa từng có để quản lý trường hợp như vậy, nhưng tôi thấy ba tùy chọn:

  • nâng cấp đá quý nếu phiên bản sau tồn tại
  • tải xuống đá quý (tài liệu nói rằng đá quý vẫn có sẵn để tải xuống, trừ khi nó đã bị xóa hoàn toàn sau một quá trình thảo luận vì lý do chính đáng) và trỏ đến phiên bản địa phương trong gemfile của bạn
  • refactor code của bạn xung quanh một viên ngọc hoặc tùy chỉnh đang

Tất cả trong tất cả, có vẻ như giật một viên ngọc là một biện pháp cực đoan luôn luôn làm cho lý do chính đáng, vì vậy bạn nên thích nâng cấp/refactoring qua gắn bó với một nguy hiểm tiềm tàng hoặc đá quý không được chấp nhận ... Tôi đoán vậy.

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