From: Gavin Sinclair Date: 2004-10-05T09:52:31+09:00 Subject: Re: RubyGems and RPA On Tuesday, October 5, 2004, 9:30:39 AM, James wrote: > Having just read the RubyGems chapter in the Pickaxe II, I'm curious > about how it compares to RPA. I'm not trying to start a war here, but > I would like some information about their differences, if someone would > be so helpful. > Do they solve the same problem, or am I confused? Same problem: management of Ruby libraries and applications. Install, uninstall, and query. gem install rake rpa install rake Pretty similar. > Are there differences in their design philosophy or fundamental > differences in their operation? Yes. RubyGems puts each gem (package) in its own directory, rather than installing everything into site_ruby/1.8/. This is specifically designed so that you can have multiple versions installed, and take advantage of that to ensure dependencies are met. For example, one person on this list was using ActiveRecord, but could only use an old one because of threading issues with the current release. So... require_gem 'activerecord', '= 0.7.4' Meant that his code would _only_ work if ActiveRecord v0.7.4 was installed as a gem on the user's computer. RPA is more transparent -- installs go into site_ruby and you access them like any directly-installed package. It's got some other magic going on, which escapes me at the moment. With RubyGems, we try to make it as easy as possible, but the ability to install and use multiple versions of packages puts a limit on the transparency. > Do they offer a similar range of packages? Yes. It's RPA's 120 to RubyGems's 100 at the moment, with significant overlap. > Can both be installed and peacefully coexist? Yes. That should always be the case. > Any thing else I should know about either? The main point of RPA is quality control. It's a "Production Archive". Eventually there will be "RPA versions" so you can access a suite of libraries all tested to work together. It's centrally managed. RubyGems is a decentralised package manager that treats each gem (and each version of each gem) as independent. If you have a RubyForge project, you just "release" your .gem file there, and it will go into the repository. > Again, I'm not trying to start a fight, I'm just trying to learn more > about my options. Thanks. No worries. Hope you enjoy them. We're lucky to have two package managers when a year ago we had none. Both were borne of the frustration of going years without one, I guess. Gavin