transfire at gmail.com
Tue Mar 20 21:39:23 EDT 2007
A few days back I brought up some ideas for dealing with
multi-packages. This evening I sat down and put to together a little
tool to handle just that: gembundle.
The ideas is simple. Lets say I have a couple of gems: hello_world.gem
% gembundle build tryme hello_world-1.0.0.gem adios_world-1.0.0.gem
This creates a tar.gz file called, tryme.gembundle which simply
contains the two listed gems, Then...
% gembundle install tryme.gembundle
Successfully installed hello_world, version 1.0.0
Successfully installed adios_world, version 1.0.0
The intsall command just copies the bundle to a temp location, unpacks
it and installs the contained gems (with the -y option).
Of course, my script is just a quick prototype --I'm shelling out for
all the tar and gem stuff. And it doesn't support some features like
remote access for grabbing gems to bundle. But hopefully it doesn't
matter b/c I wanted to see if others would approve of this
functionality being incorporated into RubyGems itself. It's pretty
straightforward. It would just mean adding a "bundle" command to the
gem CLI and allowing the installer to recognize a bundle vs a regular
gem,such that '.gem' could still be used instead '.gembundle'.
So what is it good for? It gives large application developers
breathing room to use vendor gems more freely. Per my explanation in
my last post, installing a gem that has many dependencies can be
off-putting. Not only does the administrator have to consider each
dependency, but ensuring the right versions of each can be daunting as
well. Gembundles take care these concerns. And since a bundle simply
contains regular gems it works seamlessly with the current design.
What do you think?
More information about the Rubygems-developers