Forum: Ruby question about require

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
4f35afa59f1cb65fe38b554504fa83f5?d=identicon&s=25 mr ra88it (Guest)
on 2006-01-13 17:52
(Received via mailing list)
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]
10d4acbfdaccb4eee687a428ca00a5d8?d=identicon&s=25 Jim Weirich (weirich)
on 2006-01-13 19:51
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/...)

>
> 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
430ea1cba106cc65b7687d66e9df4f06?d=identicon&s=25 David Vallner (Guest)
on 2006-01-13 22:36
(Received via mailing list)
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
912c61d9da47754de7039f4271334a9f?d=identicon&s=25 unknown (Guest)
on 2006-01-13 23:04
(Received via mailing list)
Quoting David Vallner <david@vallner.net>:

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

In which locale's notion of case? ;)

-mental
430ea1cba106cc65b7687d66e9df4f06?d=identicon&s=25 David Vallner (Guest)
on 2006-01-13 23:25
(Received via mailing list)
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
680f75e1d37a4691bf9ae902baf7beee?d=identicon&s=25 Christian Leskowsky (Guest)
on 2006-01-14 01:17
(Received via mailing list)
Thoroughly entertaining! :-)

On 1/13/06, David Vallner <david@vallner.net> wrote:
> >
>
> 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
This topic is locked and can not be replied to.