module Dio::ModuleBase

Dio::ModuleBase provides core methods as a mixin. {Dio} module extends this module so you can use all of the methods from Dio like `Dio.injector`.

Public Instance Methods

clear_stubs(clazz = nil) click to toggle source

@see Dio::Injector#clear_stubs

# File lib/dio/module_base.rb, line 61
def clear_stubs(clazz = nil)
  injector.clear_stubs(clazz)
end
create(clazz, *args) click to toggle source

Create an instance of the given class with injection.

@see

Dio::Injector#create
# File lib/dio/module_base.rb, line 35
def create(clazz, *args)
  injector.create(clazz, *args)
end
inject(target) click to toggle source

Injects dependencies using the injector this module has.

@see

Dio::Injector#inject
# File lib/dio/module_base.rb, line 27
def inject(target)
  injector.inject(target)
end
injector(id = nil) click to toggle source

Returns a injector associated with this module. If you call `Dio.injector`, it returns a default injector. If an ID is given, returns an injector of the ID.

@param id [Symbol] @return [Dio::Injector]

# File lib/dio/module_base.rb, line 19
def injector(id = nil)
  @state.injector(id || @injector_id)
end
reset_loader(clazz = nil) click to toggle source

@see Dio::Injector#reset_loader

# File lib/dio/module_base.rb, line 56
def reset_loader(clazz = nil)
  injector.reset_loader(clazz)
end
reset_state() click to toggle source

Reset a whole state. This is used mainly for tests.

# File lib/dio/module_base.rb, line 41
def reset_state
  @state.reset(@injector_id => Dio::Injector.new)
end
stub_deps(clazz, deps) click to toggle source

@see Dio::Injector#stub_deps

# File lib/dio/module_base.rb, line 51
def stub_deps(clazz, deps)
  injector.stub_deps(clazz, deps)
end
wrap_load(clazz, &wrapper) click to toggle source

@see Dio::Injector#wrap_load

# File lib/dio/module_base.rb, line 46
def wrap_load(clazz, &wrapper)
  injector.wrap_load(clazz, &wrapper)
end

Private Instance Methods

included(base) click to toggle source

Add some methods to a class which includes Dio module.

# File lib/dio/module_base.rb, line 68
def included(base)
  my_injector = injector
  injector_holder = Module.new do
    define_method :__dio_injector__ do
      my_injector
    end
  end
  base.extend(ClassMethods, injector_holder)
  base.include(InstanceMethods)
end