Module: ErrorResponse::Helper

Extended by:
ActiveSupport::Concern
Defined in:
lib/error_response/helper.rb

Instance Method Summary collapse

Instance Method Details

#error_response(key, error_message = nil, error_data = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/error_response/helper.rb', line 24

def error_response(key, error_message = nil, error_data = {})
  resolved_message = ErrorResponse.resolve_error_message(
    key: key,
    error_message: error_message,
    error_data: error_data,
    context: self
  )
  render_content = ErrorResponse.to_api(key, resolved_message).deep_dup
  if error_data.is_a?(Hash) && !error_data.empty?
    render_content[:json] = render_content[:json].merge(error_data)
  elsif error_data.is_a?(Array) && !error_data.empty?
    render_content[:json] = render_content[:json].merge(error_data: error_data)
  end
  render(render_content)
end

#rescue_with_handler(exception, *args, **kwargs) ⇒ Object

Ensure RequestError is always handled by this helper, even when controllers define broad handlers like rescue_from Exception later.



11
12
13
14
15
16
17
18
# File 'lib/error_response/helper.rb', line 11

def rescue_with_handler(exception, *args, **kwargs, &)
  if exception.is_a?(RequestError)
    error_response(exception.key, exception.error_message, exception.error_data)
    return exception
  end

  super
end

#success_response(data = {}) ⇒ Object



20
21
22
# File 'lib/error_response/helper.rb', line 20

def success_response(data = {})
  render status: 200, json: { data: data }
end