2010-10-28 26 views
13

J'ai une fourche du rails repo sur github, dans lequel j'ai une branche, basée sur la branche rails-2-3-stable . Je veux développer quelques changements basés sur les rails 2.3.10 avec mon application. Nous utilisons bundler, et l'application est versionnée avec SVN.Comment utiliser une branche dans une fourche de rails dans un projet avec bundler

Quelle est la manière la plus propre d'utiliser ma branche dans la fourche de rails github et de la partager entre les machines?

Une façon serait ceci:

how do I install edge rails?

qui travaillerait, mais ne se sent pas assez propre, comme nous aurions dû mettre à jour la version vendored manuellement lorsque les changements de mise en pension, et nous d devoir vérifier le repo git dans svn.

J'ai variations de ce essayé dans le 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' 

Tous ceux qui travaillent au départ lors de l'exécution bundle install, mais lorsque vous démarrez l'application, il ne peut pas trouver des rails dans la voie de charge:

 
/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 

Mes inscriptions Gemfile.lock sont comme ça:

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

... 

DEPENDENCIES 

... 

rails (= 2.3.10)! 

+0

Comment vous est Gemfile.lock? – shingara

+0

Mis à jour la question avec des extraits de Gemfile.lock –

Répondre

17

réponse Balu me montra la bonne voie, mais voici quelques détails:

Il était nécessaire de bricoler les fichiers ensemble .gemspec pour la plupart des pierres précieuses dans le repo/branche stable 2-3 rails - mon opinion peut être vu ou fourchue à http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320

Pour inclure dans une Gemfile, utilisez:

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

Notez que vous ne pouvez pas utiliser « railties », qui ne définit que la gemme « rails ».

Soit dit en passant, tout en travaillant sur ce point, il était beaucoup plus facile de pointer le Gemfile mon repo local, ce qui se fait de cette façon (rails étant le dossier dans lequel le repo est cloné, un niveau bas de la 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' 

Après avoir défini les rails/railties .gemspec, vous pouvez aussi laisser quelques-unes de ces pierres précieuses, et ont Bundler utiliser les versions normalement disponibles à partir Gemcutter etc.

6

Ressemble à la version 2.3.10 , les rails n'ont pas de fichiers .gemspec pour ses composants. A la place, chaque gemspec est spécifié dans le fichier Rake correspondant.

Sinon, vous utilisez:

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 

De plus Référence: http://gembundler.com/git.html

EDIT: Cela signifie que Bundler exige un gemspec être en place.

+0

Merci de m'avoir indiqué les docs git de bundler, je ne savais pas qu'il y avait plus que les docs "getting started".Cependant, je reçois toujours cette erreur: Impossible de trouver gem 'actionpack (> = 0, runtime)' dans git: //github.com/traveliq/rails.git (à tiq-correctifs). La source ne contient aucune version de 'actionpack (> = 0, runtime)' –

+1

Très bien, je suppose que votre réponse signifie: Pas possible hors de la boîte avec bundler et rails 2.3.x. Mais je suppose que je pourrais ajouter des fichiers .gemspec dans ma branche dans les dépendances? –

+0

Yup. Copiez-le simplement depuis le Rakefile dans le répertoire gem. – balu