class PUNK::Service

Public Class Methods

run(**kwargs) click to toggle source
# File lib/punk/framework/service.rb, line 15
def self.run(**kwargs)
  service = new
  service.send(:_init, **kwargs)
  service.send(:_run)
  hijack = service.send(:_callbacks)
  service.is_a?(View) && hijack.is_a?(View) ? hijack : service
end

Public Instance Methods

process() click to toggle source
# File lib/punk/framework/service.rb, line 27
def process
  raise NotImplemented, "view must provide process method"
end
result() click to toggle source
# File lib/punk/framework/service.rb, line 23
def result
  @_result
end

Protected Instance Methods

_state() click to toggle source
# File lib/punk/framework/service.rb, line 33
def _state
  ActiveSupport::StringInquirer.new(@_state.to_s)
end
on_failure() click to toggle source
# File lib/punk/framework/service.rb, line 40
def on_failure
end
on_success() click to toggle source
# File lib/punk/framework/service.rb, line 37
def on_success
end

Private Instance Methods

_callbacks() click to toggle source
# File lib/punk/framework/service.rb, line 65
def _callbacks
  success? ? on_success : on_failure
end
_init(**kwargs) click to toggle source
# File lib/punk/framework/service.rb, line 45
def _init(**kwargs)
  @_state = :ready
  @_result = nil
  _init_runnable(kwargs)
end
_run() click to toggle source
# File lib/punk/framework/service.rb, line 51
def _run
  unless ready?
    errors.add(:raised, e.message)
    @_state = :failure
    return
  end
  unless valid?
    @_state = :invalid
    return
  end
  @_result = process
  @_state = :success
end