[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

question about require

mr ra88it

1/13/2006 4:52:00 PM

Hello all,

I am under the impression that Kernel#require returns false if the
argument is already loaded. However, this morning I encountered
behavior that confused me.

I was trying to require the RedCloth gem, and I was doing it via irb.
First I tried:

irb(main):001:0> require 'redcloth'
LoadError: no such file to load -- redcloth
from (irb):1:in `require'
from (irb):1
from :0

but that didn't work because the gems were not loaded (at least I
think that's why I got an error). So, instead I did this:

irb(main):002:0> require 'rubygems'
=> true
irb(main):003:0> require 'redcloth'
=> false

So then I noticed that the last call to require returned false, which
made me think that requiring 'rubygems' was all that I needed to do
and RedCloth would automatically be loaded. I tested this by
restarting irb, but my assumption proved incorrect:

irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> RedCloth
NameError: uninitialized constant RedCloth
from (irb):2
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/specification.rb:365
irb(main):003:0> require 'redcloth'
=> false
irb(main):004:0> RedCloth
=> RedCloth

Can somebody help me understand why the RedCloth constant was not
initialized yet the call to require returns false? I hope I've
included enough information.

Incidentally, if I follow the instructions from the Pickaxe I get an error:

irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require_gem 'redcloth'
Gem::LoadError: Could not find RubyGem redcloth (> 0.0.0)

Thanks for any input!
mr.ra88it
$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]


5 Answers

Jim Weirich

1/13/2006 6:52:00 PM

0

mr ra88it wrote:
> but that didn't work because the gems were not loaded (at least I
> think that's why I got an error). So, instead I did this:
>
> irb(main):002:0> require 'rubygems'
> => true
> irb(main):003:0> require 'redcloth'
> => false

See Ruby-talk:174387
(http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-t...)

>
> Incidentally, if I follow the instructions from the Pickaxe I get an
> error:
>
> irb(main):001:0> require 'rubygems'
> => true
> irb(main):002:0> require_gem 'redcloth'
> Gem::LoadError: Could not find RubyGem redcloth (> 0.0.0)

Because the name of the gem is 'RedCloth', not 'redcloth'. Yes, case
matters when requiring gems. (Probably shouldn't ... I'll make a note
of that).

--
-- Jim Weirich


--
Posted via http://www.ruby-....


David Vallner

1/13/2006 9:34:00 PM

0

On Fri, 13 Jan 2006 19:51:58 +0100, Jim Weirich <jim@weirichhouse.org>
wrote:

>
> Because the name of the gem is 'RedCloth', not 'redcloth'. Yes, case
> matters when requiring gems. (Probably shouldn't ... I'll make a note
> of that).
>
> --
> -- Jim Weirich
>
>


Three hoolays for systems that aren't arbitrarily case-sensitive.

David Vallner


MenTaLguY

1/13/2006 10:04:00 PM

0

Quoting David Vallner <david@vallner.net>:

> Three hoolays for systems that aren't arbitrarily case-sensitive.

In which locale's notion of case? ;)

-mental


David Vallner

1/13/2006 10:24:00 PM

0

On Fri, 13 Jan 2006 23:03:35 +0100, <mental@rydia.net> wrote:

> Quoting David Vallner <david@vallner.net>:
>
>> Three hoolays for systems that aren't arbitrarily case-sensitive.
>
> In which locale's notion of case? ;)
>
> -mental
>


Oi, the Titanic of my ramble is getting ready to hit a iceberg. But, here
goes: in a locale AND context where case distinction isn't semantically
significant or actually helpful. Like programming language libraries named
in languages using the latin alphabet and using capital letters for
reasons of historical conventions rather than to disambiguate the meaning
of words *pant*. Unless someone tells me what would come from having
distinct "redcloth" and "RedCloth" libs aside from sadistically enjoying
the torment of people that confuse them.

Another example: filesystem filename lookup. </troll> *dons his +5
Asbestos Plate Mail, +80% flame resistance, and prepares to duck objects
thrown at him*

David Vallner


Christian Leskowsky

1/14/2006 12:15:00 AM

0

Thoroughly entertaining! :-)

On 1/13/06, David Vallner <david@vallner.net> wrote:
>
> On Fri, 13 Jan 2006 23:03:35 +0100, <mental@rydia.net> wrote:
>
> > Quoting David Vallner <david@vallner.net>:
> >
> >> Three hoolays for systems that aren't arbitrarily case-sensitive.
> >
> > In which locale's notion of case? ;)
> >
> > -mental
> >
>
>
> Oi, the Titanic of my ramble is getting ready to hit a iceberg. But, here
> goes: in a locale AND context where case distinction isn't semantically
> significant or actually helpful. Like programming language libraries named
> in languages using the latin alphabet and using capital letters for
> reasons of historical conventions rather than to disambiguate the meaning
> of words *pant*. Unless someone tells me what would come from having
> distinct "redcloth" and "RedCloth" libs aside from sadistically enjoying
> the torment of people that confuse them.
>
> Another example: filesystem filename lookup. </troll> *dons his +5
> Asbestos Plate Mail, +80% flame resistance, and prepares to duck objects
> thrown at him*
>
> David Vallner
>
>


--
-

'There was an owl lived in an oak.
The more he heard, the less he spoke.
The less he spoke, the more he heard.'

Christian Leskowsky
christian.leskowsky@gmail.com