[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

IRB not finding "rubygems"

Brad Hutchins

6/24/2008 4:28:00 PM

This an odd one.

require 'rubygems'

works in my scripts . . . but if I go to IRB to test some 'rspec' stuff.
I get:

>> require 'rubygems'
=> false


Tried including the whole path, but that did not work either any ideas
why scripts being run don't have a problem requiring rubygems but IRB
does?


OSX 10.5.3
Ruby 1.8.6
Model Name: MacBook Pro 15"
Model Identifier: MacBookPro1,1
Processor Name: Intel Core Duo
Processor Speed: 2.16 GHz
Number Of Processors: 1
Total Number Of Cores: 2
L2 Cache: 2 MB
Memory: 2 GB
--
Posted via http://www.ruby-....

4 Answers

Stefano Crocco

6/24/2008 4:37:00 PM

0

On Tuesday 24 June 2008, Brad Hutchins wrote:
> This an odd one.
>
> require 'rubygems'
>
> works in my scripts . . . but if I go to IRB to test some 'rspec' stuff.
>
> I get:
> >> require 'rubygems'
>
> => false
>
>
> Tried including the whole path, but that did not work either any ideas
> why scripts being run don't have a problem requiring rubygems but IRB
> does?
>
>
> OSX 10.5.3
> Ruby 1.8.6
> Model Name: MacBook Pro 15"
> Model Identifier: MacBookPro1,1
> Processor Name: Intel Core Duo
> Processor Speed: 2.16 GHz
> Number Of Processors: 1
> Total Number Of Cores: 2
> L2 Cache: 2 MB
> Memory: 2 GB

The value returned by require doesn't tell whether there was an error or not
(if the file can't be found, a LoadError exception will be raised). Rather,
since require tries to avoid loading a file more than one time, it says
whether you required the file for the first time (true) or if it had already
been loaded (in this case returns false and doesn't try to load the file
again). So, the fact that in irb

require 'rubygems'

returns false only means that the file rubygems.rb had already been loaded,
and it wasn't necessary to load it a second time.

Stefano

Iñaki Baz Castillo

6/24/2008 4:40:00 PM

0

El Martes, 24 de Junio de 2008, Brad Hutchins escribi=C3=B3:
> >> require 'rubygems'
> =3D> false

When you get "false" it means that library was **already** loaded. Example:

~$ irb
irb(main):001:0> require 'time'
=3D> true
irb(main):002:0> require 'time'
=3D> false


If the library doesn't exist in the configured path you would get an error:

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


=2D-=20
I=C3=B1aki Baz Castillo

Brad Hutchins

6/24/2008 4:57:00 PM

0

Stefano Crocco wrote:
> On Tuesday 24 June 2008, Brad Hutchins wrote:
>>
>> Processor Name: Intel Core Duo
>> Processor Speed: 2.16 GHz
>> Number Of Processors: 1
>> Total Number Of Cores: 2
>> L2 Cache: 2 MB
>> Memory: 2 GB
>
> The value returned by require doesn't tell whether there was an error or
> not
> (if the file can't be found, a LoadError exception will be raised).
> Rather,
> since require tries to avoid loading a file more than one time, it says
> whether you required the file for the first time (true) or if it had
> already
> been loaded (in this case returns false and doesn't try to load the file
> again). So, the fact that in irb
>
> require 'rubygems'
>
> returns false only means that the file rubygems.rb had already been
> loaded,
> and it wasn't necessary to load it a second time.
>
> Stefano



Hmmm . . . then I have a different problem.

on to requiring rspec

Bulk updating Gem source index for: http://gems.rub...
Updating metadata for 13 gems from http://gems.rubyo...
.............
complete
Successfully installed rspec-1.1.4
1 gem installed
Installing ri documentation for rspec-1.1.4...
Installing RDoc documentation for rspec-1.1.4...
macbook-pro-15:~ $ irb

>> require 'rspec'

LoadError: no such file to load -- rspec
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in
`require'
from (irb):1
>>


And this is the second time I have unistalled and re-installed rspec.

Tested other GEMs . . .

>> require 'snmp'
true
--
Posted via http://www.ruby-....

Stefano Crocco

6/24/2008 6:24:00 PM

0

On Tuesday 24 June 2008, Brad Hutchins wrote:
> Stefano Crocco wrote:
> > On Tuesday 24 June 2008, Brad Hutchins wrote:
> >> Processor Name: Intel Core Duo
> >> Processor Speed: 2.16 GHz
> >> Number Of Processors: 1
> >> Total Number Of Cores: 2
> >> L2 Cache: 2 MB
> >> Memory: 2 GB
> >
> > The value returned by require doesn't tell whether there was an error or
> > not
> > (if the file can't be found, a LoadError exception will be raised).
> > Rather,
> > since require tries to avoid loading a file more than one time, it says
> > whether you required the file for the first time (true) or if it had
> > already
> > been loaded (in this case returns false and doesn't try to load the file
> > again). So, the fact that in irb
> >
> > require 'rubygems'
> >
> > returns false only means that the file rubygems.rb had already been
> > loaded,
> > and it wasn't necessary to load it a second time.
> >
> > Stefano
>
> Hmmm . . . then I have a different problem.
>
> on to requiring rspec
>
> Bulk updating Gem source index for: http://gems.rub...
> Updating metadata for 13 gems from http://gems.rubyo...
> .............
> complete
> Successfully installed rspec-1.1.4
> 1 gem installed
> Installing ri documentation for rspec-1.1.4...
> Installing RDoc documentation for rspec-1.1.4...
> macbook-pro-15:~ $ irb
>
> >> require 'rspec'
>
> LoadError: no such file to load -- rspec
> from
> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rub
>ygems/custom_require.rb:27:in `gem_original_require'
> from
> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rub
>ygems/custom_require.rb:27:in `require'
> from (irb):1


That's because rspec doesn't provide a rspec.rb file but a spec.rb file. So

require 'spec'

should work.

Stefano