Come utilizzare un ramo in una forchetta di rotaie in un progetto con bundler
-
27-09-2019 - |
Domanda
Ho un fork del rotaie repo su GitHub, in cui ho' ve ha ottenuto un ramo, basato sul ramo rotaie-2-3-stabile. Voglio sviluppare alcune modifiche basate su rotaie 2.3.10 insieme con la mia app. Stiamo usando bundler, e l'applicazione è di versione con SVN.
Qual è il modo più pulito di usare la mia filiale nella forcella github di rotaie e condividere questo attraverso macchine?
Un modo potrebbe essere questo:
come faccio a installare le rotaie bordo?
che avrebbe funzionato, ma non si sente abbastanza pulito, come avremmo dovuto aggiornare la versione vendored manualmente quando cambia pronti contro termine, e avremmo dovuto controllare il repo git in svn.
Ho provato varianti di questo nel 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'
Tutti quelli inizialmente lavoro durante l'esecuzione bundle install
, ma quando si avvia l'applicazione, non riesce a trovare rotaie nel percorso di carico:
/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
Il mio voci Gemfile.lock sono come questo:
GIT remote: git://github.com/traveliq/rails.git revision: 25139ac92cea5b17791d71359bc3ae2a5d526652 branch: tiq-fixes specs: rails (2.3.10) ... DEPENDENCIES ... rails (= 2.3.10)!
Soluzione
La risposta di Balu mi indicò la strada giusta, ma qui ci sono alcuni dettagli:
E 'stato necessario a mettere insieme i file .gemspec per la maggior parte delle gemme nelle guide Repo ramo / 2-3-stabile - il mio prendere può essere visto o biforcuta all'indirizzo http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320
Per includere che in un Gemfile, uso:
git "git://github.com/traveliq/rails.git", :branch => 'tiq-fixes' do
gem 'rails'
gem 'actionmailer'
gem 'actionpack'
gem 'activerecord'
gem 'activeresource'
gem 'activesupport'
end
Si noti che non è possibile utilizzare 'railties', che solo definisce la gemma 'rotaie'.
Per inciso, mentre si lavora su questo, era modo più semplice per puntare il Gemfile al mio repo locale, che è fatto in questo modo (rotaie essendo la cartella in cui viene clonato il repo, un livello giù dal 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'
Dopo aver definito i binari / railties .gemspec, si potrebbe anche lasciare fuori alcune di quelle gemme, e usufruire bundler le versioni normalmente disponibili da Gemcutter etc.
Altri suggerimenti
appare come alla versione 2.3.10, le rotaie non hanno i file .gemspec per i suoi componenti. Invece, ogni gemspec è specificato nel corrispondente Rakefile.
In caso contrario, si può usare:
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
Ulteriori riferimenti: http://gembundler.com/git.html
EDIT: ciò significa che bundler richiede un gemspec essere a posto.