Method: Kernel#load
- Defined in:
- load.c
#load(filename, wrap = false) ⇒ true
Loads and executes the Ruby program in the file filename.
If the filename is an absolute path (e.g. starts with '/'), the file will be loaded directly using the absolute path.
If the filename is an explicit relative path (e.g. starts with './' or '../'), the file will be loaded using the relative path from the current directory.
Otherwise, the file will be searched for in the library
directories listed in $LOAD_PATH ($:).
If the file is found in a directory, it will attempt to load the file
relative to that directory. If the file is not found in any of the
directories in $LOAD_PATH, the file will be loaded using
the relative path from the current directory.
If the file doesn't exist when there is an attempt to load it, a LoadError will be raised.
If the optional wrap parameter is true, the loaded script will
be executed under an anonymous module. If the optional wrap parameter
is a module, the loaded script will be executed under the given module.
In no circumstance will any local variables in the loaded file be
propagated to the loading environment.
907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 |
# File 'load.c', line 907
static VALUE
rb_f_load(int argc, VALUE *argv, VALUE _)
{
VALUE fname, wrap, path, orig_fname;
rb_scan_args(argc, argv, "11", &fname, &wrap);
orig_fname = rb_get_path_check_to_string(fname);
fname = rb_str_encode_ospath(orig_fname);
RUBY_DTRACE_HOOK(LOAD_ENTRY, RSTRING_PTR(orig_fname));
path = rb_find_file(fname);
if (!path) {
if (!rb_file_load_ok(RSTRING_PTR(fname)))
load_failed(orig_fname);
path = fname;
}
rb_load_internal(path, wrap);
RUBY_DTRACE_HOOK(LOAD_RETURN, RSTRING_PTR(orig_fname));
return Qtrue;
}
|