Module: Coactive::Initializer
- Extended by:
- ActiveSupport::Concern
- Includes:
- Coactive::Initializers::Contexts
- Defined in:
- lib/coactive/initializer.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.resolve(instance, value) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/coactive/initializer.rb', line 32 def resolve(instance, value) if value.respond_to?(:call) instance.instance_exec(&value) elsif value.is_a?(Symbol) && instance.respond_to?(value, true) instance.send(value) else value.deep_dup end end |
Instance Method Details
#initialize(args = {}, &block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/coactive/initializer.rb', line 17 def initialize(args = {}, &block) @context = self.class.context_class.new(args, &block) @context.define_accessors!(self.class._contexts.map(&:name)) self.class._contexts.each do |var| if var.required? && !@context.key?(var.name) raise MissingContextError.new("missing required context: #{var.name}") end if var.default && !@context.key?(var.name) @context[var.name] = Initializer.resolve(self, var.default) end end end |