Class: Eco::API::Common::Loaders::ErrorHandler

Inherits:
CaseBase show all
Defined in:
lib/eco/api/common/loaders/error_handler.rb

Direct Known Subclasses

Eco::API::Custom::ErrorHandler

Class Attribute Summary collapse

Attributes included from Language::AuxiliarLogger

#logger

Instance Method Summary collapse

Methods inherited from CaseBase

#name, name_only_once!

Methods inherited from Base

<=>, created_at, set_created_at!

Methods included from ClassHelpers

#class_resolver, #descendants, #descendants?, #inheritable_attrs, #inheritable_class_vars, #inherited, #instance_variable_name, #new_class, #resolve_class, #to_constant

Methods included from Language::AuxiliarLogger

#log

Constructor Details

#initialize(handlers) ⇒ ErrorHandler

rubocop:disable Lint/MissingSuper



21
22
23
24
25
26
# File 'lib/eco/api/common/loaders/error_handler.rb', line 21

def initialize(handlers) # rubocop:disable Lint/MissingSuper
  msg = "Expected Eco::API::Policies. Given #{handlers.class}"
  raise msg unless handlers.is_a?(Eco::API::Error::Handlers)

  handlers.on(error, &method(:main))
end

Class Attribute Details

.error(value = nil) ⇒ Eco::API::Error

Returns the error class, child of Eco::API::Error.

Returns:



10
11
12
13
14
15
16
# File 'lib/eco/api/common/loaders/error_handler.rb', line 10

def error(value = nil)
  unless value
    msg = "You should specify an error type for #{self.class}"
    return @error || (raise msg)
  end
  @error = value
end

Instance Method Details

#errorObject



37
38
39
# File 'lib/eco/api/common/loaders/error_handler.rb', line 37

def error
  self.class.error
end

#main(people, session, options, handler, job) ⇒ Object

Parameters:

  • people (Eco::API::Organization::People)

    the people in the queue of the current job

  • session (Eco::API::Session)

    the current session where the usecase kicks in.

  • options (Hash)

    the options that modify the case behaviour or bring some dependencies.

  • handler (Eco::API::Error::Hanlder)

    the error handler instance object.

  • job (Eco::API::Session::Batch::Job)

    the Batch::Job made on purpose for this handler.



33
34
35
# File 'lib/eco/api/common/loaders/error_handler.rb', line 33

def main(people, session, options, handler, job) # rubocop:disable Lint/UnusedMethodArgument
  raise "You should implement this method"
end