Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anthonator/errawr
Easily define and raise localized errors
https://github.com/anthonator/errawr
Last synced: 6 days ago
JSON representation
Easily define and raise localized errors
- Host: GitHub
- URL: https://github.com/anthonator/errawr
- Owner: anthonator
- License: mit
- Created: 2013-11-01T21:39:41.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-07-18T05:34:59.000Z (over 9 years ago)
- Last Synced: 2024-10-12T03:53:02.805Z (about 1 month ago)
- Language: Ruby
- Size: 277 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Errawr
A framework for effectively defining and raising localized errors.
[![Build Status](https://travis-ci.org/anthonator/errawr.png?branch=master)](https://travis-ci.org/anthonator/errawr) [![Dependency Status](https://gemnasium.com/anthonator/errawr.png)](https://gemnasium.com/anthonator/errawr) [![Coverage Status](https://coveralls.io/repos/anthonator/errawr/badge.png?branch=master)](https://coveralls.io/r/anthonator/errawr?branch=master) [![Code Climate](https://codeclimate.com/github/anthonator/errawr.png)](https://codeclimate.com/github/anthonator/errawr)
## Installation
Add this line to your application's Gemfile:
gem 'errawr'
And then execute:
$ bundle
Or install it yourself as:
$ gem install errawr
## Usage
### Defining and Raising Errors
Errawr uses [I18n](https://github.com/svenfuchs/i18n) for easily managing error
localizations. Just define an error in a locale file. Make sure to use the
```errawr``` key.```yaml
en:
errawr:
your_error:
message: My awesome error message
metadata:
http_status: 400
```Then just raise your exception using the `#error!` method.
```ruby
begin
Errawr.error!(:your_error)
rescue => e
puts e.metadata[:http_status] # Will return 400
end
```Need to add more locale files? Use I18n's standard ```load_path```.
```ruby
I18n.load_path += Dir.glob('lib/your_lib/locales/*.{rb,yml}')
```### Metadata
It's possible to add additional information to a registered error through
metadata. Just specify a ```metadata``` hash when throwing an error:```ruby
begin
Errawr.error!(:your_error, metadata: { http_status: 400 })
rescue => e
puts e.metadata[:http_status] # Will return 400
end
```### I18n Interpolation
You can pass in parameter values to your localized error messages.
```yaml
en
errawr:
your_error:
message: "My awesome error message is: %{error_message}"
``````ruby
begin
Errawr.error!(:your_error, error_message: 'You did it wrong!')
rescue => e
puts e.message # Will return "My awesome error message is: You did it wrong!"
end
```### Overrides
It's possible to override metadata stored in a locale file both globally and
on a per use basis.```yaml
en:
errawr:
your_error:
message: My awesome error message
metadata:
http_status: 400
```The ```#register!``` method will override the locale file.
```ruby
Errawr.register!(:your_error, message: 'Some other error message', metadata: { http_status: 403 })
begin
Errawr.error!(:your_error)
rescue => e
puts e.message # => Will return "Some other error message"
puts e.metadata[:http_status] # => Will return 403
end
```The ```#error!``` method will override both ```#register!``` and the locale file.
```ruby
Errawr.register!(:your_error, message: 'Some other error message', metadata: { http_status: 403 })
begin
Errawr.error!(:your_error, message: 'Yet another error message', metadata: { http_status: 404 })
rescue => e
puts e.message # => Will return "Yet another error message"
puts e.metadata[:http_status] # => Will return 404
end
```### Custom Error Classes
Want to write a custom error class? No problem!
```ruby
class YourError < Errawr::Error
def your_method
...
end
end# Register your error with your custom class
Errawr.register!(:your_error, base_class: YourError)# Do something with it
begin
Errawr.error!(:your_error)
rescue => e
e.your_method
end
```## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request## Credits
[![Sticksnleaves](http://sticksnleaves-wordpress.herokuapp.com/wp-content/themes/sticksnleaves/images/snl-logo-116x116.png)](http://www.sticksnleaves.com)Errawr is maintained and funded by [Sticksnleaves](http://www.sticksnleaves.com)
Thanks to all of our [contributors](https://github.com/anthonator/errawr/graphs/contributors)