In Ruby, I have been told that when doing
require "some_file"
Ruby will look for the file in certain places.
I know that it looks for some_file.rb
, but where does it look for it by default?
In Ruby, I have been told that when doing
require "some_file"
Ruby will look for the file in certain places.
I know that it looks for some_file.rb
, but where does it look for it by default?
It depends on your platform, and how Ruby was compiled, so there is no "the" answer to this. You can find out by running:
ruby -e 'puts $:'
Generally, though, you have the standard, site, and vendor Ruby library paths, including an arch, version, and general directory under each.
Ruby looks in all the paths specified in the $LOAD_PATH
array.
You can also add a directory to search like so:
$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)
additional paths can be specified by setting RUBYLIB environment variable
The $LOAD_PATH global variable (also named $:) contains the list of directories that are searched.
See: http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require
require(string) => true or false
Ruby tries to load the library named string, returning true if successful. If the filename does not resolve to an absolute path, it will be searched for in the directories listed in $:. If the file has the extension ".rb", it is loaded as a source file; if the extension is ".so", ".o", or ".dll", or whatever the default shared library extension is on the current platform, Ruby loads the shared library as a Ruby extension. Otherwise, Ruby tries adding ".rb", ".so", and so on to the name. The name of the loaded feature is added to the array in $:.