class ApiError
Attributes
module_name[RW]
params[RW]
status[RW]
Public Class Methods
new(*args)
click to toggle source
初始化 ApiError
@param args [*Array] 1..3 可变长度的参数列表,对应以下三种参数列表
1. (status, options = {}) 2. (module_name, status, options = {})
@param module_name
[Symbol, String] 模块名, e.x. `:dealer` @param status [Symbol, String] 状态名,e.x. `:login_failed` @param options [Hash] 传递给底层 I18n 的 options,比如针对如下翻译:
error: "Error: %{additional_message}"
则可以使用:
ApiError.new(:error, additional_message: "Something went wrong").message => "Error: Something went wrong"
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 19 def initialize(*args) @params = args.extract_options! @module_name, @status = args.map(&:to_s) @module_name, @status = "special", @module_name unless @status.present? Rails.logger.info message validates! end
Public Instance Methods
message()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 37 def message I18n.t( "dji_errors.#{module_name}.#{status}.message", params ) end
show_code()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 27 def show_code code = I18n.t("dji_errors.#{module_name}.#{status}.code") if module_name == "special" code.to_i else "1#{module_code}#{code}".to_i end end
Private Instance Methods
check_module_name()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 58 def check_module_name I18n.t("dji_errors.#{module_name}.module_code", raise: true) rescue I18n::MissingTranslationData => e raise ApiError::UnknownModuleName.new(e.message) end
check_status()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 64 def check_status I18n.t("dji_errors.#{module_name}.#{status}.code", raise: true) I18n.t("dji_errors.#{module_name}.#{status}.message", raise: true) rescue I18n::MissingTranslationData => e raise ApiError::UnknownCode.new(e.message) end
module_code()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 42 def module_code I18n.t("dji_errors.#{module_name}.module_code") end
status_definitions()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 46 def status_definitions return @status_definitions if @status_definitions.present? @status_definitions ||= module_definitions[status.to_sym] raise ApiError::UnknownCode unless @status_definitions.is_a?(Hash) @status_definitions end
validates!()
click to toggle source
# File lib/generators/gems_generator/grape/templates/lib/api_error.rb, line 54 def validates! check_module_name && check_status end