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
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:inrequire’
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!!
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!
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, 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
The suggestion you made of including every directory under lib… looks
good. I’ll try it out. Thx for restoring my fait in Ruby I knew it
had to be me and not Ruby that was playing tricks on me
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.