[Rubygems-developers] Local installation w/deps (or, So I'm writing a Tinderbox...)

Eric Hodel drbrain at segment7.net
Wed Nov 15 04:10:06 EST 2006

Well, Evan Phoenix wrote the Tinderbox web site and I've built (most  
of) the gem runner.  Maybe next week we'll have it all put together.

The basic idea is to install a gem into a sandbox (with  
dependencies), run the gem's tests, then post the results of the  
tests on a website to the shame of all who failed to make their tests  
pass.  (Maybe I'll even add a couple of leaderboards, including "most  
assertions" and "most dooomed".)  Anyhow...

My main issue is installing gems.  I flushed out a few bugs I found  
in Rubygems related to installing gems in a sandbox and have fixed  

Now I have the problem of the discontinuity between local and remote  
installation.  Remote installation automatically installs all  
dependencies.  Local installation only installs the named gem.

I don't want to fetch every gem every time over the internet.  That's  
just not nice.

I don't want to re-write the three or four methods in RemoteInstaller  
that handle dependencies into Tinderbox::GemRunner.

So, what's the plan to unify the two?  I have the motivation,  
interest, and time.  I imagine the stupid-simple version would take  
about a day.

Oh, instead, can I do something fancy with the gems in the cache  
dir?  If a file lives there does rubygems skip a trip out to the  
internet?  (I haven't looked, its late and the idea just popped into  
my head.)

And one more thing.

Tinderbox::GemRunner copies the source_cache from the host gem  
repository into the sandbox to cut down on source_cache fetches, but  
I still see a lot of them.  Sometimes even back-to-back.  Is there  
something in Rubygems I should be poking at to make this go away?

Should Rubygems ever do a bulk update once it has a source_cache?

Eric Hodel - drbrain at segment7.net - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant


More information about the Rubygems-developers mailing list