You use
require
or
load
to bring a library module into your
Ruby program. Some of these modules are supplied with Ruby, some you
installed off the Ruby Application Archive, and some you wrote
yourself. How does Ruby find them?
When Ruby is built for your particular machine, it predefines a set
of standard directories to hold library stuff. Where these are
depends on the machine in question. You can
determine this from the command line with something like:
On a typical Linux box, you'll probably find something such as:
/usr/local/lib/ruby/site_ruby/1.6/i686-linux
/usr/local/lib/ruby/site_ruby/1.6
/usr/local/lib/ruby/site_ruby
/usr/local/lib/ruby/1.6/i686-linux
/usr/local/lib/ruby/1.6
.
|
The
site_ruby
directories are intended to hold modules and extensions that
you've added.
The architecture-dependent directories (
i686-linux
in this case) hold executables and other things specific to this
particular machine. All these directories are automatically included
in Ruby's search for modules.
Sometimes this isn't enough. Perhaps you're working on a large project
written in Ruby, and you and your colleagues have built a substantial
library of Ruby code. You want everyone on the team to have access to
all of this code. You have a couple of options to accomplish this. If
your program runs at a safe level of zero (see
Chapter 20 beginning on page 253),
you can set the environment variable
RUBYLIB
to a list of one or more directories to be
searched.
[The separator between entries depends on your
platform. For Windows, it's a semicolon; for Unix, a colon.] If your
program is not
setuid,
you can use the command-line parameter
-I
to do the same thing.
Finally,
the Ruby variable
$:
is an array of places to search
for loaded files. This variable is initialized to the list of standard
directories, plus any additional ones you specified using
RUBYLIB
and
-I
. You can always add additional directories to this array
from within your running program.