Как использовать ветку в развилке рельсов в проекте с бандлером - PullRequest
13 голосов
/ 28 октября 2010

У меня есть ветвь репозитория rails на github, в которой у меня есть ветвь, основанная на ветке rails-2-3-stable. Я хочу разработать некоторые изменения на основе рельсов 2.3.10 вместе с моим приложением. Мы используем пакет, и приложение имеет версию с SVN.

Какой самый чистый способ использовать мою ветку в github-форке рельсов и делиться этим между машинами?

Один из способов был бы таков:

как установить боковые направляющие?

, который работал бы, но не чувствовал себя достаточно чистым, поскольку нам пришлось бы обновлять продаваемую версию вручную, когда репо меняется, и мы должны были бы проверить git-репо в svn.

Я попробовал варианты этого в 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'

Все они изначально работают при запуске bundle install, но при запуске приложения оно не может найти рельсы в пути загрузки:

/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

Мои записи Gemfile.lock выглядят так:

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

...

DEPENDENCIES

...

rails (= 2.3.10)!

Ответы [ 2 ]

17 голосов
/ 01 ноября 2010

Ответ Балу указал мне правильный курс, но вот еще несколько деталей:

Необходимо было собрать воедино файлы .gemspec для большинства драгоценных камней в ветке rails repo / 2-3-stable - мой дубль можно увидеть или разветвить на http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320

Чтобы включить это в Gemfile, используйте:

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

Обратите внимание, что вы не можете использовать 'railties', который определяет только камень 'rails'.

Между прочим, работая над этим, было намного проще указать Gemfile на мое локальное репо, что делается следующим образом (rails - это папка, в которой клонируется репо, уровень ниже 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'

После определения rails / railties .gemspec, вы также можете опустить некоторые из этих драгоценных камней и заставить упаковщик использовать обычно доступные версии из gemcutter и т. Д.

6 голосов
/ 29 октября 2010

Похоже на версию 2.3.10, у rails не было файлов .gemspec для его компонентов.Вместо этого каждый gemspec указан в соответствующем Rake-файле.

В противном случае вы бы использовали:

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

Дополнительная ссылка: http://gembundler.com/git.html

РЕДАКТИРОВАТЬ: Это означает, что для упаковщика требуетсяGemspec, чтобы быть на месте.

...