Easily fetch values from nested ruby hashes.
Add this line to your application's Gemfile:
gem 'deep_fetch'
And then execute:
bundle
Let's say we have a big hash:
example = {
:foo => {
:bar => [ 'a', 'b', 'c' ],
:baz => :boo
}
}
We can fetch a value under :foo, :baz easily:
example.deep_fetch(:foo, :baz) # => :boo
If the key does not exist, we receive KeyError exception, just like using Hash#fetch
example.deep_fetch(:foo, :boo) # => KeyError: key not found: :boo
Specify a default value to be returned if key is missing in a block:
example.deep_fetch(:foo, :boo) { "not found" } # => "not found"
Lastly, if the hash contains nested array, we can get values from it by providing an integer:
example.deep_fetch(:foo, :bar, 1) # => 'b'
The gem might be useful when working with deeply nested hashes, e.g. API responses.
By using Hash#deep_fetch
we can assert that the response contains the key, making it fail loud otherwise.
- 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