Method: Jinx::Importer#load_dir

Defined in:
lib/jinx/importer.rb

#load_dir(dir) ⇒ Object (private)

Loads the Ruby source files in the given directory.

Parameters:

  • dir (String)

    the source directory



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/jinx/importer.rb', line 160

def load_dir(dir)
  logger.debug { "Loading the class definitions in #{dir}..." }
  # Import the classes.
  srcs = sources(dir)
  # Introspect and load the classes in reverse class order, i.e. superclass before subclass.
  klasses = srcs.keys.transitive_closure { |k| [k.superclass] }.select { |k| srcs[k] }.reverse
  # Introspect the classes as necessary.
  klasses.each { |klass| (klass) unless introspected?(klass) }
  # Load the classes.
  klasses.each do |klass|
    file = srcs[klass]
    load_definition(klass, file)
  end
  logger.debug { "Loaded the class definitions in #{dir}." }
end