module LunaPark::Extensions::Injector::InstanceMethods

Public Instance Methods

dependencies() click to toggle source

List instance defined dependencies, in default it defined in class methods.

class SetActive
  dependency(:repo) { Repo.new(CONFIG[:db_connect]) }
  dependency(:messenger) { Messenger }
end

use_case = SetActive.new(user_id: 1)

# All dependencies
use_case.dependencies             # => {
                                  #   :repo=>#<Proc:0x0000564a0d90d668@t.rb:33>,
                                  #   :messenger=>#<Proc:0x0000564a0d90d438@t.rb:34>
                                  # }

# Single dependency
use_case.dependencies[:messenger] # => #<Proc:0x0000564a0d90d438@t.rb:34>

# Dependency value
use_case.messenger                # => Messenger
# File lib/luna_park/extensions/injector.rb, line 175
def dependencies
  @dependencies ||= Dependencies.wrap(self.class.dependencies)
end
dependencies=(value) click to toggle source

Setter - highly recommended for use in specs so you don't forget to override all dependencies.

use_case.dependencies = {
  repo: -> { Fake::Repo.new }
}
use_case.messenger # => Dependency `messenger` is undefined (LunaPark::Errors::DependencyUndefined)
use_case.call      # => Dependency `messenger` is undefined (LunaPark::Errors::DependencyUndefined)

# Redefine single dependency still possible
use_case.dependencies[:messenger] = -> { Messenger }
# File lib/luna_park/extensions/injector.rb, line 191
def dependencies=(value)
  @dependencies = Dependencies.wrap(value)
end