Let’s imagine we develop application, depending on a couple of our own gems.
Or, say, we decide to break a functionality into several gems. The main
application Gemfile
thus contains references to our gems among all others.
gem 'mycutegem'
The above uses the gem from Ruby Gems, which is quite inconvenient in our case: we modify it simultaneously. There is option to supply path to load the source locally:
gem 'mycutegem', :path => '../mycutegem'
This is hardly acceptable because Gemfile
became inconsistent with remote
repository. Unfortunately, we cannot specify rules for different groups
in the Gemfile
, like:
gem 'mycutegem', :path => '../mycutegem', :group => :development
gem 'mycutegem', '~> 0.9.3', :group => :production
You cannot specify the same gem twice with different version requirements.
The solution is simple. There is an ability to inform bundler about our local copy of repository:
$ bundle config local.mycutegem /home/am/Projects/mycutegem
The latter should be a path to local git repository. Now the
following code will use our local version of repository (with all the
hot changes,) while all others will use the public source (:branch
is
mandatory):
gem 'mycutegem',
:git => 'git://github.com/mudasobwa/mycutegem',
:branch => 'master'