Ruby on Rails support in Intrepid - call for reviewers and cheerleaders

Neil Wilson neil at
Wed Aug 20 13:07:46 UTC 2008


I'm trying to avoid the wheres and wherefores of what gem is about.
Suffice to say that Rails depends upon effective gem support, such
that the configuration of Rails can specify gem dependencies directly.

So if Ubuntu wants Rails, it has to have Gem that works. Therefore I
saw my task as trying to get gem to work as a user would expect it to
work without gem destroying the operating system, leaving cruft lying
around the filesystem in the wrong place and try and prevent it
running into itself too much

It's an exercise in containment.

>>What are you referring to exactly ? Which use case do you have in mind ?
>It's my understanding that gems produces one complete package (gem) with
>all Ruby libs needed to run the application and that there is no internal
>notion of versioning.

Think of gem as a source package that generates binary packages on the
fly. It has notions of build dependencies with other gems (including
versioning) and run dependencies.

One thing it can do is manage several versions of the same gem on the
machine at the same time.

For example the Rails gem depends upon the rake, activesupport,
activerecord, actionpack, actionmailer and actionresource gems. You
can install multiple different versions (usually one of each minor
revision - 1.2.6, 2.0.2 and 2.1.0) and gem will ensure that the
correct versions of the dependent gems are brought in at run time.

So it's not all downside.

> This sounds very like Windows DLL hell.

It can be, but in reality you don't generally have a problem. For the
most part the system works - until you start uninstalling, upgrading
the operating system or changing interpreter versions.

> It does sound like progress.  As long as we aren't actually packaing the
> gems themselves it seems like a reasonable way to go until Ruby Gems grows
> enough features to support proper integration of gems into the distro
> package space.

Debian has attempted to package some gems, and the results are really
not very useful from a Rails point of view. The packages don't tell
the gem database that apt has installed something. So gem just
reinstalls it. The classic example is the Rake package which is always
overridden if somebody does 'gem install rails'.

Making apt and gem work better together is something for the future though.

Neil Wilson

More information about the Ubuntu-devel-discuss mailing list