class RKit::Core::Loader

Attributes

_base[RW]
dependencies[RW]
load_paths[RW]

Public Class Methods

loaded() click to toggle source
# File lib/r_kit/core/loader.rb, line 6
def self.loaded
  @loaded.map{ |name| name.demodulize.underscore }
end
loaded?(name) click to toggle source
# File lib/r_kit/core/loader.rb, line 10
def self.loaded? name
  @loaded.include? name
end
new(base) click to toggle source
# File lib/r_kit/core/loader.rb, line 15
def initialize base
  @_base = base
  @load_paths = []
  @dependencies = []
end

Public Instance Methods

dependencies!() click to toggle source
# File lib/r_kit/core/loader.rb, line 30
def dependencies!
  dependencies.each &:load!
end
dependency(*services) click to toggle source

TODO: when a dependency is added, we must define in the opposite service a “dependency forbidden” TODO: in order to avoid recursive dependency

# File lib/r_kit/core/loader.rb, line 24
def dependency *services
  services.each do |service|
    dependencies << Dependency.new(_base, service: service)
  end
end
load!() click to toggle source
# File lib/r_kit/core/loader.rb, line 51
def load!
  dependencies!
  load_paths!
  loaded!
end
load_path(file, *paths, **options) click to toggle source
# File lib/r_kit/core/loader.rb, line 35
def load_path file, *paths, **options
  paths.each do |path|
    load_paths << LoadPath.new(_base, file: file, path: path, **options.slice(:priority, :if, :unless))
  end
end
load_paths!() click to toggle source
# File lib/r_kit/core/loader.rb, line 41
def load_paths!
  load_paths.sort{ |a, b| a.priority <=> b.priority }.each &:load!
end
loaded!() click to toggle source
# File lib/r_kit/core/loader.rb, line 46
def loaded!
  self.class.instance_variable_get("@loaded") << _base.name
end