Class: LunaPark::Extensions::Injector::Dependencies
- Inherits:
-
Hash
- Object
- Hash
- LunaPark::Extensions::Injector::Dependencies
- Defined in:
- lib/luna_park/extensions/injector/dependencies.rb
Overview
Hash for define dependencies in LunaPark::Extensions::Injector extension.
Main difference between Hash and Dependencies it is memorization;
# hash example
i = 0
hash = { i: -> { i += 1 } }
hash[:i].call # => 1
hash[:i].call # => 2
# dependencies
i = 0
dependencies = Dependencies.wrap(i: -> { i += 1 })
dependencies.call_with_cache(:i) # => 1
dependencies.call_with_cache(:i) # => 1
Class Method Summary collapse
-
.try_convert(obj) ⇒ Object
(also: wrap)
Dependencies.try_convert(obj) -> hash or nil.
Instance Method Summary collapse
- #[]=(key, _val) ⇒ Object
-
#call_with_cache(key) ⇒ Object
Run dependency code and cache result.
Class Method Details
.try_convert(obj) ⇒ Object Also known as: wrap
Dependencies.try_convert(obj) -> hash or nil
Try to convert obj into a hash, using to_hash method. Returns converted hash or nil if obj cannot be converted for any reason.
See Hash.try_convert
Dependencies.try_convert({1=>2}) # => {1=>2}
Dependencies.try_convert("1=>2") # => nil
38 39 40 |
# File 'lib/luna_park/extensions/injector/dependencies.rb', line 38 def try_convert(obj) super.nil? ? nil : new.replace(super) end |
Instance Method Details
#[]=(key, _val) ⇒ Object
54 55 56 57 |
# File 'lib/luna_park/extensions/injector/dependencies.rb', line 54 def []=(key, _val) cache.delete(key) super end |
#call_with_cache(key) ⇒ Object
Run dependency code and cache result.
use_case.dependencies[:messenger] # => #<Proc:[email protected]:34>
use_case.dependencies.call_with_cache(:messenger) # => 'Foobar'
50 51 52 |
# File 'lib/luna_park/extensions/injector/dependencies.rb', line 50 def call_with_cache(key) cache.key?(key) ? cache[key] : cache[key] = fetch(key).call end |