Module: Injectable::Initializer
- Defined in:
- lib/injectable/initializer.rb
Instance Method Summary collapse
- #add_reader(variable_name) ⇒ Object
- #defaults ⇒ Object
- #initialize(overwrites = {}, *args) ⇒ Object
- #set_instance_variables(args) ⇒ Object
- #set_local_variables(parameters, args) ⇒ Object
Instance Method Details
#add_reader(variable_name) ⇒ Object
25 26 27 28 29 |
# File 'lib/injectable/initializer.rb', line 25 def add_reader(variable_name) self.class.class_eval do attr_reader variable_name end end |
#defaults ⇒ Object
31 32 33 |
# File 'lib/injectable/initializer.rb', line 31 def defaults raise NotImplementedException "Please implement a #defaults method" end |
#initialize(overwrites = {}, *args) ⇒ Object
6 7 8 9 |
# File 'lib/injectable/initializer.rb', line 6 def initialize(overwrites = {}, *args) set_local_variables(method(:initialize).parameters, args) set_instance_variables(defaults.merge(overwrites)) end |
#set_instance_variables(args) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/injectable/initializer.rb', line 18 def set_instance_variables(args) args.each do |variable_name, value| instance_variable_set "@#{variable_name}", value add_reader(variable_name) end end |
#set_local_variables(parameters, args) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/injectable/initializer.rb', line 11 def set_local_variables(parameters, args) parameters.each_with_index do |parameter, index| instance_variable_set "@#{parameter.last}", args[index] add_reader(parameter.last) end end |