dry-matcher provides a ready-to-use ResultMatcher for working with Result or Try monads from Dry Monads or any other compatible gems.
value = Dry::Monads::Success("success!")
result = Dry::Matcher::ResultMatcher.(value) do
m.success(Integer) do
"Got int: "
end
m.success do
"Yay: "
end
m.failure :not_found do
"Nope: "
end
m.failure do
"Boo: "
end
end
result # => "Yay: success!"