2009-10-17 26 views
54

Tôi đã tìm thấy chính mình hai lần trong tình huống này: Tôi cài đặt một viên ngọc trên hệ thống của mình và bắt đầu sử dụng nó từ dự án Rails của tôi. Cuối cùng tôi cần phải thực hiện một số thay đổi cho đá quý đó. Tôi nên tiến hành như thế nào?Ngã ba đá quý cho dự án Rails

Lý tưởng nhất là tôi muốn kiểm tra mã nguồn của đá quý đó ở đâu đó, như ~/third_party/gems, hãy làm việc trên đó và sử dụng dự án Rails của tôi để thay thế. Điều đó có thể không?

Trong tất cả các trường hợp, đá quý ở github vì vậy tôi có lẽ sẽ cho nó ở github, sao chép nó, tạo cơ hội và duy trì nhánh của riêng tôi. Tôi cho rằng sau đó tôi sẽ cài đặt nhánh đó trực tiếp với gem install trên máy chủ của tôi. Điều đó có ý nghĩa?

+0

Đá quý xây dựng tại GitHub đang bị loại bỏ. http://github.com/blog/515-gem-building-is-defunct –

Trả lời

92

Hôm nay việc này khá dễ thực hiện với Bundler. Bạn tạo một bản sao cục bộ của đá quý và sau đó thay vì làm

gem "whatever" 

trong Gemfile của bạn, bạn cần làm:

gem "whatever", :path => "/home/pupeno/whatever" 

Sau khi chạy bó cài đặt, đá quý được chọn từ thư mục đó. Ngay cả khi bạn sửa đổi một cái gì đó trong đó, tất cả các bạn cần làm để tải lại nó là khởi động lại Rails.

Nếu bạn cần phải triển khai một ứng dụng sử dụng những thay đổi của riêng bạn một Gem, bạn thực hiện một ngã ba, trên Github hoặc tương đương và trên Gemfile bạn làm:

gem "whatever", :git => "[email protected]:/pupeno/whatever.git" 

và đó là nó. Nó đơn giản, đơn giản và đẹp.

+2

Điều này rất hữu ích, vì trong một số trường hợp, có một đá quý cũ, hoặc có chức năng mà tôi muốn sử dụng làm điểm nhìn chằm chằm. Cảm ơn. –

+0

Giải pháp rất hữu ích! – RubyFanatic

+16

Tôi khuyên bạn nên sử dụng url công khai. 'git: // github.com/pupeno/whatever.git' thay vì riêng tư (' [email protected]: pupeno/whatever.git') trong trường hợp người khác sử dụng dự án của bạn và không có quyền truy cập riêng tư vào repo –

5

Trong tất cả các trường hợp, đá quý ở github vì vậy tôi có thể cho nó ở github, sao chép nó, tạo cơ hội và duy trì nhánh của riêng tôi. Tôi cho rằng sau đó tôi sẽ cài đặt nhánh đó trực tiếp với gem install trên máy chủ của tôi.

Nếu bạn thực sự cần phải hack nguồn đá quý thực sự thì có, đó sẽ là cách để làm điều đó. Tuy nhiên, nó phải là một phương sách cuối cùng. Bạn không muốn duy trì đá quý thực sự nếu bạn không phải. Tại sao không mở rộng các lớp từ nguồn đá quý có chức năng bạn cần thay đổi và sử dụng các lớp của bạn thay vì các lớp đá quý trong mã Rails của bạn?

Tôi thấy hiếm khi bạn thực sự cần phải hack mã của bên thứ ba trực tiếp để thực hiện những gì bạn cần làm. Phần mềm tốt có thể được mở rộng/dễ dàng tăng cường.

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