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