2012-02-20 12 views
6

Nhóm của chúng tôi có nhiều người, bất kỳ số nào trong số đó có thể hoạt động trên bất kỳ tổ hợp đá quý nào. Hiện nay, Gemfile của chúng tôi có những thứ như thế này:Gemfile: Cách tốt hơn để khai báo có điều kiện đá quý cục bộ hoặc từ xa cho nhiều nhà phát triển

gem 'awesome-gem', :git => '[email protected]:somebody/awesome-gem.git' 
# gem 'awesome-gem', :path => '/Users/developer-A/workspace/awesome-gem' 

# gem 'rad-gem', :git => '[email protected]:somebody/rad-gem.git', :branch => 'release' 
gem 'rad-gem', :path => '/some/path/specific-to/developer-B/rad-gem' 

Vì vậy, phát triển-A đã làm việc trên tuyệt vời-đá quý tại địa phương, và khi họ đã hoàn thành lập, họ chỉ thay thế của họ: con đường của đá quý: vị trí git và cam kết cả phiên bản điều khiển. nhà phát triển-B và C làm điều tương tự cho rad-gem, mỗi cái có một đường dẫn khác nhau trong Gemfile được sửa đổi cục bộ của họ và nếu Gemfile đều có thay đổi thực, họ phải hoàn tác thiết lập đường dẫn cục bộ, commit, undo để trỏ ngược lại lên phiên bản địa phương của họ về rad-đá quý, vv

Đây là cả một nỗi đau và xấu xí, vì vậy tôi đã cố gắng để tìm ra một giải pháp tốt hơn nhưng tốt nhất tôi có thể đưa ra là một cái gì đó như thế này:

if ENV['RADGEM_PATH'] 
    gem 'rad-gem', :path => ENV['RADGEM_PATH'] 
else 
    gem 'rad-gem', :git => '[email protected]:somebody/rad-gem.git', :branch => 'release' 
end 

Điều này cho phép nhà phát triển-B và C thiết lập đường dẫn rad-gem của riêng họ trong khi loại bỏ phần lớn nỗi đau được đề cập ở trên. Tuy nhiên, nó vẫn còn xấu xí và tôi tự hỏi nếu có một cách tốt hơn để làm điều này, có thể sử dụng các nhóm?

Trả lời

8

Cập nhật (hiện tại)

Cập nhật gần đây để Bunder hiện nay cung cấp local git repos. Đây là cách giải quyết vấn đề hiện tại. Cảm ơn bạn sekrett

Cập nhật (cũ)

Nếu bạn có Bundler> = 1.2, bây giờ có một better way to do this. Ví dụ,

bundle config local.blog ~/Work/gems/blog 

câu trả lời ban đầu (lỗi thời)

Một người bạn của tôi trong nhóm nòng cốt rspec chỉ cho tôi the approach they used in the rspec-core Gemfile, vì vậy tôi nghĩ tôi sẽ sử dụng đó.

+0

URL cho tài liệu giờ đây là http://gembundler.com/v1.2/man/bundle-config.1.html#LOCAL-GIT-REPOS – cbliard

+0

Bây giờ, tại đây: http://bundler.io/v1 .2/man/bundle-config.1.html # LOCAL-GIT-REPOS – sekrett

0

Bạn cũng không thể có Gemfile động trong quá trình phát triển sử dụng tệp ẩn (.my_local_gems) cho vị trí của đá quý trên máy của người dùng đó? Hoặc thậm chí bạn có thể sử dụng một số biến môi trường cho một biến như GEMS_DEVEL_HOME?

Dù bằng cách nào, nó sẽ buộc tất cả mọi người để giữ cho tất cả các đá quý địa phương của họ đến nay và trong sản xuất hoặc dàn dựng, Gemfile bình thường sẽ có hiệu lực.

Hãy nhớ rằng, Gemfile chỉ là ruby ​​để bạn có thể bao gồm tất cả các loại mã trong đó, không chỉ các thành ngữ cụ thể của gói.

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