Method: ActiveOperation::Base#initialize

Defined in:
lib/active_operation/base.rb

#initialize(*args) ⇒ Base

Returns a new instance of Base.

Raises:

  • (ArgumentError)


99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/active_operation/base.rb', line 99

def initialize(*args)
  arity = self.class.inputs.count(&:positional?)
  arguments = args.shift(arity)
  attributes = args.last.kind_of?(Hash) ? args.pop : {}

  raise ArgumentError, "wrong number of arguments #{arguments.length + args.length} for #{arity}" unless args.empty?

  self.class.inputs.select(&:positional?).each_with_index do |input, index|
    attributes[input.name] = arguments[index]
  end

  super(attributes)
end