module TTY::Config::DependencyLoader

Attributes

dep_name[RW]

Public Instance Methods

dependency(*dep_names, &block) click to toggle source

Lazy load a dependency

@api public

# File lib/tty/config/dependency_loader.rb, line 11
def dependency(*dep_names, &block)
  self.dep_name = dep_names
  @block = block
end
inherited(subclass) click to toggle source
Calls superclass method
# File lib/tty/config/dependency_loader.rb, line 35
def inherited(subclass)
  super
  subclass.send(:dep_name=, dep_name)
end
load() click to toggle source

Try loading depedency

@api private

# File lib/tty/config/dependency_loader.rb, line 27
def load
  return if dep_name.nil?

  dep_name.empty? ? @block.() : dep_name.each { |dep| require(dep) }
rescue LoadError, NameError => err
  raise DependencyLoadError, "#{raise_error_message} #{err.message}"
end
new(*) click to toggle source

Load dependency before object instatiation

@api public

Calls superclass method
# File lib/tty/config/dependency_loader.rb, line 19
def new(*)
  load
  super
end

Private Instance Methods

raise_error_message() click to toggle source
# File lib/tty/config/dependency_loader.rb, line 42
def raise_error_message
  if dep_name.empty?
    "One or more dependency are missing."
  elsif dep_name.size == 1
    "The dependency `#{dep_name.join}` is missing."
  else
    "The dependencies `#{dep_name.join(', ')}` are missing."
  end
end