Module: LunaPark::Extensions::Injector::InstanceMethods
- Included in:
- LunaPark::Extensions::Injector
- Defined in:
- lib/luna_park/extensions/injector.rb
Instance Method Summary collapse
-
#dependencies ⇒ Object
List instance defined dependencies, in default it defined in class methods.
-
#dependencies=(value) ⇒ Object
Setter - highly recommended for use in specs so you don’t forget to override all dependencies.
-
#inject(value) ⇒ Object
Set dependencies, returns ‘self` to allow chaining Don’t forget to override all dependencies.
Instance Method Details
#dependencies ⇒ Object
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:[email protected]:33>,
# :messenger=>#<Proc:[email protected]:34>
# }
# Single dependency
use_case.dependencies[:messenger] # => #<Proc:[email protected]:34>
# Dependency value
use_case.messenger # => Messenger
175 176 177 |
# File 'lib/luna_park/extensions/injector.rb', line 175 def dependencies @dependencies ||= Dependencies.wrap(self.class.dependencies) end |
#dependencies=(value) ⇒ Object
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 }
191 192 193 |
# File 'lib/luna_park/extensions/injector.rb', line 191 def dependencies=(value) @dependencies = Dependencies.wrap(value) end |
#inject(value) ⇒ Object
Set dependencies, returns ‘self` to allow chaining Don’t forget to override all dependencies.
use_case
.inject({ repo: -> { Fake::Repo.new }})
.call
203 204 205 206 |
# File 'lib/luna_park/extensions/injector.rb', line 203 def inject(value) self.dependencies = value self end |