Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save svenfuchs/370142 to your computer and use it in GitHub Desktop.
Save svenfuchs/370142 to your computer and use it in GitHub Desktop.
I would like to be able to have multiple bundles (or Gemfiles) per project.
I'd imagine things to work like this:
Gemfile.a1
gem 'a', '~> 1' # depends on gem b (1.0.0)
Gemfile.a2
gem 'a', '~> 2' # depends on gem b (2.0.0)
Now `bundle install` would install all the relevant versions:
a (1.0.0)
a (2.0.0)
b (1.0.0)
b (2.0.0)
From the runner/application/process I could now pick a bundle that I want to
work within:
bunde exec a1 ruby test/all.rb # runs test/all.rb within bundle a1
bunde exec a2 ruby test/all.rb # runs test/all.rb within bundle a2
Even if `bundle exec` can't easily be extended like this I still might have
my own bundle-aware runner that could do something like:
bundle = Bundler.pick('a1')
bundle.setup(:group1, :group2)
instead of:
Bundler.setup(:group1, :group2)
This would unlock tons of flexibility and power that - unless I'm missing
something big - not available with Bundler.
E.g. it would be a snap to test a particular version of the I18n gem against
several Rails versions on Heroku.
With the current Bundler single-bundle design that always only allows to
install a single, consistent bundle and run stuff within this bundle I'd have
to set up a CI server per Ruby version AND per Rails version that I want to
test against on Heroku. (Which of course is possible but really ugly.)
Being able to tell the server to pick up one of many Gemfiles/bundles which
all already are installed on my Heroku stack I'd only have to maintain a stack
per Ruby version (like 1.8.7 and 1.9.1). I could then have the CI server run
my tests against each of the installed bundles.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment