This is a Ruby gem that allows you to build structured error objects in a flexible and configurable way.
Before you begin, ensure you have met the following requirements:
- Ruby version 3.1.0 or newer. You can check your Ruby version by running
ruby -v. - Bundler installed. You can install Bundler with
gem install bundler.
Install the gem and add to the application's Gemfile by executing:
$ bundle add error_builder
If bundler is not being used to manage dependencies, install the gem by executing:
$ gem install error_builder
If you have to use in Rails:
- Add to
Gemfile
gem 'error_builder'-
Run
bundle i -
You can configure the gem by using the ErrorBuilder.configure block:
ErrorBuilder.configure do |config|
config.format = :hash # Supported formats: :hash, :array, custom class format
config.message_format = :string # Supported formats: :string, :array
end- Create an Error Engine
errors = ErrorBuilder::Engine.new- Add Errors
errors.add(:base, "Something went wrong")- Convert Errors to Hash or Array (depends on configuration)
errors.to_h #=> { base: ["Something went wrong"] }You can include ErrorBuilder in your classes to use the errors method:
class MyService
include ErrorBuilder
def call
errors.add(:base, "Something went wrong")
true
end
end
my_service = MyService.new
my_service.call
my_service.errors.to_h #=> { base: ["Something went wrong"] }class MyService
include ErrorBuilder
def call
errors.add("user.locations[0].name", "must be present")
true
end
end
my_service = MyService.new
my_service.call
my_service.errors.to_h #=> { "user" => { "locations" => { 0 => { "name" => ["must be present"] } } } } }
my_service.errors.to_h(flat: true) #=> { "user.locations[0].name" => ["must be present"] }class CustomFormat
def initialize(errors, **)
@errors = errors
end
def to_h
@errors.map { |error| "#{error.key} #{error.message.join(", ")}" }
end
end
errors = ErrorBuilder::Engine.new(format: CustomFormat)
errors.add(:base, "Something went wrong")
errors.to_h #=> ["base Something went wrong"]After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. Then, eun rake rubocop to run the rubocop. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/mmarusyk/error_builder. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct. You can find a list of contributors in the CONTRIBUTORS.md file.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the error_builder project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.