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
end
Rendering 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
end
The 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
end
class 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