module Angostura::Dependencies::ClassMethods

Attributes

dependencies[RW]

Public Instance Methods

dependency(*args, **kargs) click to toggle source
# File lib/angostura/dependencies.rb, line 18
def dependency(*args, **kargs)
  self.dependencies = args + kargs&.keys
  singleton_class.send(:attr_reader, *dependencies)

  dependencies.each do |dependency|
    define_singleton_method "#{dependency}=" do |value|
      raise Angostura::DependencyTypeError.new(value) if !value.is_a? String
      self.class_eval("@#{dependency} = value")
    end

    define_singleton_method "#{dependency}_class" do
      Object.const_get(self.send(dependency))
    end
  end

  kargs.each do |key, default_value|
    send("#{key}=", default_value)
  end
end
setup() { |self| ... } click to toggle source
# File lib/angostura/dependencies.rb, line 10
def setup
  yield self

  dependencies.each do |dependency|
    raise Angostura::DependencyError.new(dependency) if send(dependency).nil?
  end
end