Errawr::Rails
Raise and render errors in Rails using Errawr
Installation
Add this line to your application's Gemfile:
gem 'errawr-rails'
And then execute:
$ bundle
Or install it yourself as:
$ gem install errawr-rails
Usage
Getting Started
To start raising errors in Rails just include Errawr::Rails in a controller. This will provide access to the #error! method in your controller.
class SomeController < ApplicationController
include Errawr::Rails
def index
if params[:dont_work] == true
error!(:bad_request)
end
end
endRendering Error Responses
If you'd like to catch and render errors in a particular format include Errawr::Rails using the #with_renderer method.
class SomeController < ApplicationController
include Errawr::Rails.with_renderer(Errawr::Rails::Renderers::JSON)
def index
if params[:dont_work] == true
error!(:bad_request)
end
end
endThe above example will render the error as JSON using the following format:
{
"error": "bad_request",
"description": "Bad Request"
}Depending on what renderer is used additional metadata may be added to the response output:
class SomeController < ApplicationController
include Errawr::Rails.with_renderer(Errawr::Rails::Renderers::JSON)
def index
if params[:dont_work] == true
error!(:bad_request, metadata: { extra_info: 'I like candy' })
end
end
end{
"error": "bad_request",
"description": "Bad Request",
"extra_info": "I like candy"
}Currently the only renderer that ships with Errawr::Rails is Errawr::Rails::Renderers::JSON.
Custom Renderers
To create a custom renderer simple create a class with that specifies a call method that accepts a single parameter. The method can return anything that the Rails render method will accept.
class MyCustomRenderer
def call(error)
{
json: {
hello: 'world'
}
}
end
endclass SomeController < ApplicationController
include Errawr::Rails.with_renderer(MyCustomRenderer)
def index
if params[:dont_work] == true
error!(:bad_request)
end
end
end{
"hello": "world"
}HTTP Status Codes
Errawr::Rails uses the Errawr::HTTP gem to add support for 4xx and 5xx HTTP status code errors.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Credits
Errawr::Rails is maintained and funded by Sticksnleaves
Thanks to all of our contributors