class Grape::Exceptions::Base
Constants
- BASE_ATTRIBUTES_KEY
- BASE_MESSAGES_KEY
- FALLBACK_LOCALE
Attributes
headers[R]
message[R]
status[R]
Public Class Methods
new(status: nil, message: nil, headers: nil, **_options)
click to toggle source
# File lib/grape/exceptions/base.rb, line 10 def initialize(status: nil, message: nil, headers: nil, **_options) @status = status @message = message @headers = headers end
Public Instance Methods
[](index)
click to toggle source
# File lib/grape/exceptions/base.rb, line 16 def [](index) send index end
Protected Instance Methods
compose_message(key, **attributes)
click to toggle source
TODO: translate attribute first if BASE_ATTRIBUTES_KEY.key respond to a string message, then short_message is returned if BASE_ATTRIBUTES_KEY.key respond to a Hash, means it may have problem , summary and resolution
# File lib/grape/exceptions/base.rb, line 25 def compose_message(key, **attributes) short_message = translate_message(key, **attributes) if short_message.is_a? Hash @problem = problem(key, **attributes) @summary = summary(key, **attributes) @resolution = resolution(key, **attributes) [['Problem', @problem], ['Summary', @summary], ['Resolution', @resolution]].reduce('') do |message, detail_array| message << "\n#{detail_array[0]}:\n #{detail_array[1]}" unless detail_array[1].blank? message end else short_message end end
problem(key, attributes)
click to toggle source
# File lib/grape/exceptions/base.rb, line 40 def problem(key, attributes) translate_message("#{key}.problem".to_sym, attributes) end
resolution(key, attributes)
click to toggle source
# File lib/grape/exceptions/base.rb, line 48 def resolution(key, attributes) translate_message("#{key}.resolution".to_sym, attributes) end
summary(key, attributes)
click to toggle source
# File lib/grape/exceptions/base.rb, line 44 def summary(key, attributes) translate_message("#{key}.summary".to_sym, attributes) end
translate(key, **options)
click to toggle source
# File lib/grape/exceptions/base.rb, line 73 def translate(key, **options) options = options.dup options[:default] &&= options[:default].to_s message = ::I18n.translate(key, **options) message.present? ? message : ::I18n.translate(key, locale: FALLBACK_LOCALE, **options) end
translate_attribute(key, **options)
click to toggle source
# File lib/grape/exceptions/base.rb, line 58 def translate_attribute(key, **options) translate("#{BASE_ATTRIBUTES_KEY}.#{key}", default: key, **options) end
translate_attributes(keys, **options)
click to toggle source
# File lib/grape/exceptions/base.rb, line 52 def translate_attributes(keys, **options) keys.map do |key| translate("#{BASE_ATTRIBUTES_KEY}.#{key}", default: key, **options) end.join(', ') end
translate_message(key, **options)
click to toggle source
# File lib/grape/exceptions/base.rb, line 62 def translate_message(key, **options) case key when Symbol translate("#{BASE_MESSAGES_KEY}.#{key}", default: '', **options) when Proc key.call else key end end