[Rubygems-developers] The deprecation of autorequire

Luis Lavena luislavena at gmail.com
Wed Jan 14 20:29:54 EST 2009


On Wed, Jan 14, 2009 at 7:17 PM, Berger, Daniel <Daniel.Berger at qwest.com> wrote:
> Hi,
>
> I'm curious as to why Gem#gem doesn't autorequire the library:
>
> require 'rubygems'
> gem 'ptools'
> require 'ptools' # Must I do this?
> p File.which('ruby')
>
> If I leave out the 'require' on line 3 it doesn't work.
>
> I checked rubygems.rb and the $LOAD_PATH definitely includes the path
> where the gems are stored, but as far as I can tell the Gem.activate
> method does _not_ automatically call require (or gem_original_require)
> on the gem specified.
>
> Why not?
>
> I realize in most cases you can just use reqular 'require', but that
> doesn't work in all cases. For example, if I want to use Test::Unit 2.x
> instead of the one that ships with the stdlib, I must use the above
> approach.
>
> This isn't a major deal. It's just a minor nuisance really, but I was
> curious.
>
> Regards,
>
> Dan
>

AFAIK autorequire has been deprecated.

A good reason will be that under certain circumstances you don't want
to load the whole library of a gem.

gem 'rspec', '~> 1.1.10' # allow me to have a code locked to a
specific mayor.minor safe versions
require 'spec/expectations'

with autorequire, the above example would have included 'spec' which
is big and offer way more stuff that I wanted to integrate (I only
wanted the expectations).

As you mention, you need to call #gem to indicate you want the gem
version over the bundled one.

The same will apply to Rake, which is bundled with 1.9:

require 'rubygems'
gem 'rake'
require 'rake'

unless the stdlib cases, you can simply everything to just:

require 'rubygems'
require 'ptools'

And will work, no need to indicate the gem activation at all.

Did I miss something?
-- 
Luis Lavena
AREA 17
-
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry


More information about the Rubygems-developers mailing list