I've got a fork of the rails repo on github, in which I've got a branch, based on the rails-2-3-stable branch. I want to develop some changes based on rails 2.3.10 together with my app. We're using bundler, and the app is versioned with SVN.
What is the cleanest way to use my branch in the github fork of rails and share this across machines ?
One way would be this:
which would work, but doesn't feel clean enough, as we'd have to update the vendored version manually when the repo changes, and we'd have to check the git repo into svn.
I've tried variations of this in the 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'
All of those initially work when running bundle install
, but when starting the app, it can't find rails in the load path:
/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
My Gemfile.lock entries are like this:
GIT remote: git://github.com/traveliq/rails.git revision: 25139ac92cea5b17791d71359bc3ae2a5d526652 branch: tiq-fixes specs: rails (2.3.10) ... DEPENDENCIES ... rails (= 2.3.10)!
Looks like at version 2.3.10, rails did not have .gemspec files for its components. Instead, each gemspec is specified in the corresponding Rakefile.
Otherwise you would use:
Further reference: http://gembundler.com/git.html
EDIT: That means that bundler requires a gemspec to be in place.
balu's answer pointed me to the right course, but here are some more details:
It was necessary to cobble together .gemspec files for most of the gems in the rails repo/2-3-stable branch - my take can be seen or forked at http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320
To include that in a Gemfile, use:
Note that you can't use 'railties', that only defines the 'rails' gem.
Incidentally, while working on this, it was way easier to point the Gemfile at my local repo, which is done this way (rails being the folder where the repo is cloned, a level down from the Gemfile):
After defining the rails/railties .gemspec, you could also leave out some of those gems, and have bundler use the normally available versions from gemcutter etc.