class SweetActions::JSON::BaseAction

Attributes

response_code[R]
response_data[R]

Public Instance Methods

perform_action() click to toggle source
# File lib/sweet_actions/json/base_action.rb, line 8
def perform_action
  run_action = Proc.new do
    before_action
    @response_data = action
  end

  debug_mode? ? run_action.call : fail_gracefully(run_action)
  controller.render status: response_code, json: response_data
end

Private Instance Methods

debug_mode?() click to toggle source
# File lib/sweet_actions/json/base_action.rb, line 37
def debug_mode?
  ENV['SWEET_ACTION_DEBUG_MODE'] == true
end
fail_gracefully(proc) click to toggle source
# File lib/sweet_actions/json/base_action.rb, line 20
def fail_gracefully(proc)
  @response_code = '200'
  begin
    proc.call
  rescue Exceptions::NotAuthorized => e
    @response_code = '401'
    @response_data = {
      message: 'not authorized'
    }
  rescue StandardError => e
    @response_code = '500'
    @response_data = {
      server_error: e.message
    }
  end
end