Module: Collaborator
- Defined in:
- lib/collaborator.rb
Instance Method Summary collapse
- #dependency(name, default_dep) ⇒ Object
-
#evaluate_dependency(dependency) ⇒ Object
a dependecy might be a class, an instance or a lambda evaluate the lambda if necessary.
Instance Method Details
#dependency(name, default_dep) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/collaborator.rb', line 13 def dependency(name, default_dep) define_method(name) do cached = instance_variable_get("@#{name}") return cached if cached self.send "reset_#{name}" end define_method("#{name}=") do |injected| self.prepare_collaborator(name, injected) if self.respond_to?(:prepare_collaborator) instance_variable_set("@#{name}", injected) end define_method("reset_#{name}") do evaluated = self.class.evaluate_dependency(default_dep) self.prepare_collaborator(name, evaluated) if self.respond_to?(:prepare_collaborator) instance_variable_set("@#{name}", evaluated) evaluated end end |
#evaluate_dependency(dependency) ⇒ Object
a dependecy might be a class, an instance or a lambda evaluate the lambda if necessary
5 6 7 8 9 10 11 |
# File 'lib/collaborator.rb', line 5 def evaluate_dependency(dependency) if dependency.is_a?(Proc) return dependency.call else dependency end end |