Skip to content

t11k/ter_ror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TerRor

TerRor is a simple gem that helps to organize and translate Rails API errors.

Usage

TerRor requires two files to work. Firs one: config/error_messages.yml is a simple list of available error codes with corresponding short messages.

1001: "Name can't be blank"
1002: "Email already taken"
1003: "Phone format is invalid"

2001: "Weapon must be one of: Whire, Firearm."
2002: "Serial number must be in format: '1111-2222-3333-4444-DE'."

The second one: config/error_codes.yml is a mapping of model errors into error codes.

terrorist:
  name_blank: 1001
  email_taken: 1002
  phone_invalid: 1003
weapon:
  kind_inclusion: 2001
  serial_number_invalid: 2002

You can configure TerRor to use other locations or names of these files like this:

  TerRor.configure do |config|
    config.messages_filepath = "config/api_error_messages.yml"
    config.codes_filepath = "config/api_error_codes.yml"
  end

By default Terror::Model module is mixed into ApplicationRecord. You must include it yourself in classes that do not inherit from ApplicationRecord. This module adds terrors method to models which returns list of object's errors translated into codes in the following format:

  [
    {
      "code" => 1001,
      "message" =>  "Name can't be blank"
    }, {
      "code" => 1002,
      "message" => "Email already taken"
    }, {
      "code" => 1003,
      "message" => "Phone format is invalid"
    }
  ]

There is also a Terror::Controller module mixed into ApplicationController which gives you a convenient helper to render errors JSON:

class SomeController < ApplicationController
  def create
    if new_object.save
      head :no_content
    else
      render_terrors(new_object)
    end
  end

Installation

Add this line to your application's Gemfile:

gem 'ter_ror'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ter_ror

License

The gem is available as open source under the terms of the MIT License.

About

Translate RoR errors to API error codes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published