class Raes::Reducer

Public Class Methods

new(action) click to toggle source
# File lib/raes/reducer.rb, line 7
def initialize(action)
  @action = action
end

Public Instance Methods

call() click to toggle source
# File lib/raes/reducer.rb, line 11
def call
  return @action unless @action.queued!

  @action.working!
  @action.state = create_state.to_json
  @action.status = :completed
rescue StandardError => e
  @action.state = { message: e }
  @action.status = :failed
ensure
  @action.save!
  @action
end
create_state() click to toggle source
# File lib/raes/reducer.rb, line 25
def create_state
  klass = @action.name.constantize
  if klass.instance_method(:initialize).arity.zero?
    klass.call
  else
    klass.call(JSON.parse(@action.payload).symbolize_keys)
  end
end