Cómo utilizar una rama en un tenedor de rieles en un proyecto con bundler
-
27-09-2019 - |
Pregunta
Tengo un tenedor de la carriles de recompra en github, en el que yo' ve consiguió una rama, sobre la base de la rama carriles-2-3-estable. Quiero desarrollar algunos cambios basados ??en los carriles 2.3.10 junto con mi aplicación. Estamos utilizando bundler, y la aplicación se versiona con SVN.
¿Cuál es la manera más limpia que usar mi rama en el tenedor github de rieles y compartir esto a través de las máquinas?
Una forma sería la siguiente:
cómo instalo canales del borde?
, que funcionaría, pero no se siente lo suficientemente limpia, ya que tendríamos que actualizar la versión vendored manualmente cuando cambia de pase, y nos gustaría tener que comprobar el repositorio git en SVN.
He intentado variaciones de este en el 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'
Todos los inicialmente el trabajo cuando se ejecuta bundle install
, pero cuando se inicia la aplicación, que no puede encontrar los carriles en la vía de carga:
/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
Mi Gemfile.lock entradas son así:
GIT remote: git://github.com/traveliq/rails.git revision: 25139ac92cea5b17791d71359bc3ae2a5d526652 branch: tiq-fixes specs: rails (2.3.10) ... DEPENDENCIES ... rails (= 2.3.10)!
Solución
La respuesta de Balu me señaló a la dirección correcta, pero aquí hay algunos detalles más:
Fue necesario improvisar archivos juntos .gemspec para la mayoría de las joyas de los carriles repo rama / 2-3-estable - mi toma puede ser visto o se bifurcó en http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320
Para incluir que en un Gemfile, utilice:
git "git://github.com/traveliq/rails.git", :branch => 'tiq-fixes' do
gem 'rails'
gem 'actionmailer'
gem 'actionpack'
gem 'activerecord'
gem 'activeresource'
gem 'activesupport'
end
Tenga en cuenta que no se puede utilizar 'railties', que sólo define la gema 'rieles'.
Por cierto, mientras se trabaja en esto, que era mucho más fácil señalar el Gemfile en mi repo local, que se hace de esta manera (carriles siendo la carpeta donde se clona el repositorio, un nivel por debajo del 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'
Después de definir los raíles / railties .gemspec, también se puede dejar de lado algunas de esas joyas, y tienen uso bundler las versiones normalmente disponibles a partir de un tallador de gemas, etc.
Otros consejos
Se ve como en la versión 2.3.10, los carriles no tenían archivos .gemspec para sus componentes. En cambio, cada gemspec se especifica en la Rakefile correspondiente.
De lo contrario se debería utilizar:
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
Además referencia: http://gembundler.com/git.html
EDIT: Esto significa que bundler requiere un gemspec a estar en su lugar.