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