[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

require wackyness

Vincent Ds

1/2/2009 11:37:00 PM

Hi,

First time poster here ... picking up Ruby again after neglecting it for
> 2 years after some rails work. But, instead of Rails, this time I want
to properly understand Ruby. Sadly though progress is slow ... mainly
due to the following problem:

I have a root directory containing 2 folders (lib & spec). lib contains
a couple of sub-folders and I want all of the folders known to Ruby so
that it knows where to look when I require the files. But somehow this
isn't working. Probably making a beginner mistake ... Here is what I
have:

lib/classes/movie.rb:

class Movie
#...
end

spec/spec_helper.rb:

paths = %w(classes, logic, logic/scrapers)
paths.each do |p|
$LOAD_PATH <<
File.expand_path("#{File.dirname(__FILE__)}/../lib/#{p}")
end
puts $LOAD_PATH

spec/imdb_movie_scraper_spec.rb:

$LOAD_PATH << File.expand_path(File.dirname(__FILE__))

require 'spec_helper'
require 'imdb_movie_scraper'
require 'movie'
#...

Here is what I do:
in the root directory (directory containing lib and spec):
spec spec/imdb_movie_scraper_spec.rb -c

and it gives me the following annoying error:
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
`gem_original_require': no such file to load -- movie (LoadError)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from ./spec/imdb_movie_scraper_spec.rb:6 (yes, this is include 'movie'

I know that spec_helper launched since it outputs the $LOAD_PATH just
above the error.

HOW is this possible? The file movie.rb is obviously defined in
/Users/spobo/Code/movie-crawler/lib/classes and this is included in
$LOAD_PATH.

What am I missing here? Debugging and figuring out this stuff any longer
and my shiny new laptop will go from 60 to 0 in 0.01 second flat against
the wall. *aaaaaaaar* it's frustrating!!
--
Posted via http://www.ruby-....

2 Answers

Rob Biedenharn

1/3/2009 12:42:00 AM

0

On Jan 2, 2009, at 6:37 PM, Vincent Ds wrote:
> Hi,
>
> First time poster here ... picking up Ruby again after neglecting it
> for
>> 2 years after some rails work. But, instead of Rails, this time I
>> want
> to properly understand Ruby. Sadly though progress is slow ... mainly
> due to the following problem:
>
> I have a root directory containing 2 folders (lib & spec). lib
> contains
> a couple of sub-folders and I want all of the folders known to Ruby so
> that it knows where to look when I require the files. But somehow this
> isn't working. Probably making a beginner mistake ... Here is what I
> have:
>
> lib/classes/movie.rb:
>
> class Movie
> #...
> end
>
> spec/spec_helper.rb:
>
> paths = %w(classes, logic, logic/scrapers)
You almost certainly do not want those commas:
paths = %w( classes logic logic/scrapers)
>
> paths.each do |p|
> $LOAD_PATH <<
> File.expand_path("#{File.dirname(__FILE__)}/../lib/#{p}")
> end
> puts $LOAD_PATH
>
> spec/imdb_movie_scraper_spec.rb:
>
> $LOAD_PATH << File.expand_path(File.dirname(__FILE__))
>
> require 'spec_helper'
> require 'imdb_movie_scraper'
> require 'movie'
> #...
>
> Here is what I do:
> in the root directory (directory containing lib and spec):
> spec spec/imdb_movie_scraper_spec.rb -c
>
> and it gives me the following annoying error:
> /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
> `gem_original_require': no such file to load -- movie (LoadError)
> from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
> `require'
> from ./spec/imdb_movie_scraper_spec.rb:6 (yes, this is include
> 'movie'
>
> I know that spec_helper launched since it outputs the $LOAD_PATH just
> above the error.
>
> HOW is this possible? The file movie.rb is obviously defined in
> /Users/spobo/Code/movie-crawler/lib/classes and this is included in
> $LOAD_PATH.
>
> What am I missing here? Debugging and figuring out this stuff any
> longer
> and my shiny new laptop will go from 60 to 0 in 0.01 second flat
> against
> the wall. *aaaaaaaar* it's frustrating!!
> --


If you want *all* the directories under lib/ to be in the LOAD_PATH,
you could do:

Dir['../lib/**/**'].each do |dir|
$LOAD_PATH << File.expand_path(dir)
end
puts $LOAD_PATH

Then you'd pick up ALL the future directories under lib/, too!

-Rob

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com



Vincent Ds

1/3/2009 12:37:00 PM

0

Rob Biedenharn wrote:
> On Jan 2, 2009, at 6:37 PM, Vincent Ds wrote:
>> contains
>>
>> spec/spec_helper.rb:
>>
>> paths = %w(classes, logic, logic/scrapers)
> You almost certainly do not want those commas:
> paths = %w( classes logic logic/scrapers)
>>
>> /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
>> /Users/spobo/Code/movie-crawler/lib/classes and this is included in
>> $LOAD_PATH.
>>
>> What am I missing here? Debugging and figuring out this stuff any
>> longer
>> and my shiny new laptop will go from 60 to 0 in 0.01 second flat
>> against
>> the wall. *aaaaaaaar* it's frustrating!!
>> --
>
>
> If you want *all* the directories under lib/ to be in the LOAD_PATH,
> you could do:
>
> Dir['../lib/**/**'].each do |dir|
> $LOAD_PATH << File.expand_path(dir)
> end
> puts $LOAD_PATH
>
> Then you'd pick up ALL the future directories under lib/, too!
>
> -Rob
>
> Rob Biedenharn http://agileconsult...
> Rob@AgileConsultingLLC.com
Aha!

Rob, Thx! It was indeed the beginner mistake of using the commas where
there shouldn't be any. The ways of other programming languages are
still blocking my thinking :p

The suggestion you made of including every directory under lib... looks
good. I'll try it out. Thx for restoring my fait in Ruby :D I knew it
had to be me and not Ruby that was playing tricks on me :p
--
Posted via http://www.ruby-....