module Medicine::DI::ClassMethods
Public Instance Methods
dependencies()
click to toggle source
# File lib/medicine.rb, line 93 def dependencies @dependencies ||= Dependencies.new end
Private Instance Methods
dependency(name, options = {})
click to toggle source
Declare a dependency
@param [Symbol] name @param [Hash] options
@example
class MyThing depdendency :user_repo, default: -> { User } end
@api public
# File lib/medicine.rb, line 110 def dependency(name, options = {}) dependencies.add(name, options) define_method name do @injections.fetch(name) do self.class.dependencies.fetch(name).default do raise NoInjectionError, "Dependency not injected and default not declared for #{name}" end end end private name self end
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/medicine.rb, line 126 def inherited(subclass) subclass.instance_variable_set("@dependencies", @dependencies) super end