Class | Script
In: | lib/facets/more/script.rb
Parent: | Module

A module which is an instance of the Script class encapsulates in its scope the top-level methods, top-level constants, and instance variables defined in a ruby script file (and its subfiles) loaded by a ruby program. This allows use of script files to define objects that can be loaded into a program in much the same way that objects can be loaded from YAML or Marshal files.

See intro.txt for an overview.

### Methods

include include_script load load_in_module load_path_lookup new require

### Classes and Modules

Class Script::MissingFile

### External Aliases

new | -> | load

### Attributes

load_path | [R] | An array of paths to search for scripts. This has the same semantics as `$:`, alias `$LOAD_PATH`, excpet that it is local to this script. The path of the current script is added automatically (equivalent to ’.’)
loaded_features | [R] | A hash that maps `filename=>true` for each file that has been required locally by the script. This has the same semantics as `$"`, alias `$LOADED_FEATURES`, except that it is local to this script.
main_file | [R] | The file with which the Script was instantiated.

### Public Class methods

new(main_file, options=nil, &block)

Creates new Script, and loads main_file in the scope of the Script. If a block is given, the script is passed to it before loading from the file, and constants can be defined as inputs to the script.

### Public Instance methods

include(*mods)
include_script(file)
load(file, wrap = false)

Loads file into this Script. Searches relative to the local dir, that is, the dir of the file given in the original call to `Script.load(file)`, loads the file, if found, into this Script‘s scope, and returns true. If the file is not found, falls back to `Kernel.load`, which searches on `$LOAD_PATH`, loads the file, if found, into global scope, and returns true. Otherwise, raises `LoadError`.

The wrap argument is passed to `Kernel.load` in the fallback case, when the file is not found locally.

Typically called from within the main file to load additional sub files, or from those sub files.

load_in_module(file)

Loads file in this module‘s context. Note that `__FILE__` and `__LINE__` work correctly in file. Called by load and require; not normally called directly.

load_path_lookup(feature)

Lookup feature in load path.

require(feature)

Analogous to `Kernel#require`. First tries the local dir, then falls back to `Kernel#require`. Will load a given feature only once.

Note that extensions (*.so, *.dll) can be required in the global scope, as usual, but not in the local scope. (This is not much of a limitation in practice—you wouldn‘t want to load an extension more than once.) This implementation falls back to `Kernel#require` when the argument is an extension or is not found locally.

[Validate]