If you're loading a Ruby class (or other code) from another source file, use the
require function, and give the file name without the
.rb on the end of it. Ruby will look in each of the directories listed in
$: or
$LOAD_PATH in turn, and that list usually includes . (the current directory). See that in
irb:
>> puts $:
/Library/Ruby/Site/1.8
/Library/Ruby/Site/1.8/powerpc-darwin11.0
/Library/Ruby/Site/1.8/universal-darwin11.0
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8/universal-darwin11.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr /lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin11.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0
.
=> nil
>>
But, occasionally, you may find a system where . is not included; there are security concerns relating to injection attacks in unfriendly environments which cause this to be a concern. And the effect is an error like this, even if the
porridge.rb file is present in your current directory:
>> require "porridge"
LoadError: no such file to load -- porridge
This came up yesterday on a delegate's system, running the Backtrack version of Ubuntu.
Solution? Set the
RUBYLIB environment variable, which is an extra colon-separated list of places that
require is to look. You should
export the variable from your shell, so:
export RUBYLIB=$RUBYLIB:.
(the echoing back of the old value allowing for other modifications of
RUBYLIB which you will not want to overwrite).
(written 2012-02-24)
Associated topics are indexed under
R118 - Ruby Sources and Resources [3783] Load path, load and require in Ruby, and a change from 1.8 to 1.9 - (2012-06-24)
[3435] Sorta sorting a hash, and what if an exception is NOT thrown - Ruby - (2011-09-12)
[3426] Automed web site testing scripted in Ruby using watir-webdriver - (2011-09-09)
[2931] Syncronise - software, trains, and buses. Please! - (2010-08-22)
[2621] Ruby collections and strings - some new examples - (2010-02-03)
[2610] Cheat Sheet - what do you need for Ruby on Rails? - (2010-01-31)
[550] 2006 - Making business a pleasure - (2006-01-01)
R119 - Ruby Miscellany [3799] Ruby Documentation through rdoc - (2012-07-07)
[3428] How many days to Christmas? - (2011-09-09)
[3155] Rake - a build system using code written in Ruby - (2011-02-03)
[1890] MySQL database from Ruby - an example - (2008-11-16)
[1889] Ruby mixins, modules, require and include - (2008-11-16)
[1720] Some Ruby lesser used functions - (2008-07-26)
[1586] Variable types in Ruby - (2008-03-21)
[1181] Good Programming practise - where to initialise variables - (2007-05-09)
584e
Some other Articles
There is so much to see travelling by train An update on Billy the Greyhound and Gypsy the LurcherWhy do we need a Model, View, Controller architecture?Some TestWise examples - helping use Ruby code to check your web site operationLoading Ruby classes - where does Ruby look?Matching regular expressions, and substitutions, in RubyFinding the total, average, minimum and maximum in a programRuby v Perl - a comparison examplelists and struct::list in Tcl - Introduction to struct::list and examplesThe fileutil package and a list of file system commands in Tcl