2010-10-28 21 views
13

Tôi đã có một ngã ba của rails repo trên github, trong đó tôi đã có một chi nhánh, dựa trên rails-2-3-ổn định chi nhánh . Tôi muốn phát triển một số thay đổi dựa trên đường ray 2.3.10 cùng với ứng dụng của tôi. Chúng tôi đang sử dụng bundler và ứng dụng được phiên bản với SVN.Làm thế nào để sử dụng một chi nhánh trong một ngã ba đường ray trong một dự án với bundler

Cách sạch nhất để sử dụng chi nhánh của tôi trong github ngã ba đường ray và chia sẻ điều này trên các máy là gì?

Một cách sẽ là thế này:

how do I install edge rails?

mà sẽ làm việc, nhưng không cảm thấy sạch đủ, như chúng ta sẽ phải cập nhật phiên bản vendored cách thủ công khi những thay đổi repo, và chúng tôi d phải kiểm tra git repo vào svn.

Tôi đã cố gắng biến những điều này trong Gemfile:

gem 'rails', '2.3.10', :git => 'git://github.com/traveliq/rails.git', :branch => 'tiq-fixes' 
gem 'rails', '2.3.10', :git => 'git://github.com/traveliq/rails.git', :tag => 'v2.3.10' 
gem 'rails', '2.3.10', :git => 'git://github.com/rails/rails.git', :tag => 'v2.3.10' 

Tất cả những bước đầu làm việc khi chạy bundle install, nhưng khi khởi động ứng dụng, nó không thể tìm thấy đường ray trong đường dẫn tải:

 
/home/mt/Development/config/boot.rb:57:in `require': no such file to load -- initializer (LoadError) 
    from /home/mt/Development/config/boot.rb:57:in `load_initializer' 
    from /home/mt/Development/config/boot.rb:117:in `run' 
    from /home/mt/Development/config/boot.rb:11:in `boot!' 
    from /home/mt/Development/config/boot.rb:130 
    from script/console:2:in `re 
mục

My Gemfile.lock là như thế này:

 
GIT 
    remote: git://github.com/traveliq/rails.git 
    revision: 25139ac92cea5b17791d71359bc3ae2a5d526652 
    branch: tiq-fixes 
    specs: 
    rails (2.3.10) 

... 

DEPENDENCIES 

... 

rails (= 2.3.10)! 

+0

như thế nào bạn Gemfile.lock? – shingara

+0

Cập nhật câu hỏi với đoạn trích Gemfile.lock –

Trả lời

17

Balu của chỉ tôi đường lối đúng đắn, nhưng đây là một số chi tiết:

Nó là cần thiết để rai tập tin với nhau .gemspec cho hầu hết các đá quý trong đường ray repo/chi nhánh 2-3-ổn định - mất của tôi có thể được nhìn thấy hoặc chia hai tại http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320

Để đưa rằng trong một Gemfile, sử dụng:

git "git://github.com/traveliq/rails.git", :branch => 'tiq-fixes' do 
    gem 'rails' 
    gem 'actionmailer' 
    gem 'actionpack' 
    gem 'activerecord' 
    gem 'activeresource' 
    gem 'activesupport' 
end 

Lưu ý rằng bạn không thể sử dụng 'railties', mà chỉ xác định đá quý 'đường ray'.

Ngẫu nhiên, trong khi làm việc này, cách dễ dàng hơn để chỉ Gemfile tại repo địa phương của tôi, được thực hiện theo cách này (đường ray là thư mục mà repo được nhân bản, một mức từ Gemfile):

gem 'rails',   :path => 'rails/railties' 
gem 'actionmailer',  :path => 'rails/actionmailer' 
gem 'actionpack',  :path => 'rails/actionpack' 
gem 'activerecord',  :path => 'rails/activerecord' 
gem 'activesupport', :path => 'rails/activesupport' 

Sau khi xác định các đường ray/railties .gemspec, bạn cũng có thể bỏ qua một số những đá quý, và có bundler sử dụng các phiên bản thông thường có sẵn từ gemcutter, vv

6

Hình như ở phiên bản 2.3.10 , đường ray không có tệp .gemspec cho các thành phần của nó. Thay vào đó, mỗi gemspec được chỉ định trong Rakefile tương ứng.

Nếu không, bạn sẽ sử dụng:

git "git://github.com/traveliq/rails.git", :branch => 'tiq-fixes', :tag => 'v2.3.10' do 
    gem 'actionpack' 
    gem 'activesupport' 
    gem 'activerecord' 
    gem 'activemodel' 
    gem 'actionmailer' 
    gem 'railties' 
end 

Tham khảo thêm: http://gembundler.com/git.html

EDIT: Điều đó có nghĩa rằng bundler đòi hỏi một gemspec được đặt đúng chỗ. câu trả lời

+0

Cảm ơn bạn đã chỉ cho tôi tới tài liệu git bundler, không biết có nhiều tài liệu "bắt đầu".Tuy nhiên, tôi vẫn gặp phải lỗi này: Không thể tìm thấy actionpack 'gem' (> = 0, thời gian chạy) 'trong git: //github.com/traveliq/rails.git (tại các bản sửa lỗi tiq). Nguồn không chứa bất kỳ phiên bản nào của 'actionpack (> = 0, thời gian chạy)' –

+1

Được rồi, tôi lấy câu trả lời của bạn có nghĩa là: Không thể ra khỏi hộp với gói và đường ray 2.3.x. Nhưng tôi đoán tôi có thể thêm các tập tin .gemspec trong nhánh của tôi vào các phụ thuộc? –

+0

Yup. Chỉ cần sao chép nó từ Rakefile trong thư mục gem. – balu

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