Hello wonderful community! ❤️🌸

Today we're happy to announce hanami-validations v2.0.0.alpha1 release 🙌.

A new validation experience 😎

While we're continuing the work on Hanami 2, we decided to anticipate the release of the new hanami-validations.

As result of the collaboration with DRY & ROM, this new version is based on the now stable dry-validation gem.

The most noteworthy change is the introduction of Hanami::Validator, a new superclass to inherit from:

# frozen_string_literal: true

require "hanami/validations"

class SignupValidator < Hanami::Validator
  schema do
    required(:email).value(:string)
    required(:age).value(:integer)
  end

  rule(:age) do
    key.failure("must be greater than 18") if value < 18
  end
end

validator = SignupValidator.new

result = validator.call(email: "user@hanamirb.test", age: 37)
result.success? # => true

result = validator.call(email: "user@hanamirb.test", age: "foo")
result.success? # => false
result.errors.to_h # => {:age=>["must be an integer"]}

result = validator.call(email: "user@hanamirb.test", age: 17)
puts result.success? # => false
puts result.errors.to_h # => {:age=>["must be greater than 18"]}

See more examples in the README and dry-validation documentation

The old Hanami::Validation mixin is still present for backwards compatibility.

Compatibility 🔙

The reason why we anticipated the release of hanami-validations v2.0.0.alpha1 is for compatibility reasons.

Because of Semantic Versioning reasons, Hanami 1.x depends indirectly on outdated versions of both DRY & ROM gems. There is a huge demand to use latest DRY & ROM gems with Hanami 1.x, and hanami-validations 1.3 was a blocker.

With today's release of hanami v1.3.2 it's possible to use latest DRY & ROM versions.

How to upgrade ⬆

Edit the Gemfile of your Hanami 1 application:

gem "hanami-validations", "~> 2.0.alpha"
gem "hanami",             "~> 1.3"

Then run:

$ bundle update hanami hanami-validations

Now you'll need to update the syntax of your validations, including action params.

If you want to see a working example of Hanami 1 + DRY 1 + ROM 5, please check: https://github.com/jodosha/orders.

Implications 👓

Please remember that using hanami-validations v2.0.0.alpha1 with hanami ~> 1.3 is completely optional. It's just a way to let you to use latest DRY & ROM gems, only if needed.

If you decide to upgrade, you already have the validators ready for Hanami 2.

You can also decide to use ROM 5 with Hanami 1 of today.

What's next? ⏰

We were aiming to release a new Hanami alpha version in April 2019. We apologize if we didn't make it. We had both private life & technical difficulties that prevented us to met our goals. Thanks for understading.💚

The new alpha version will be released during the Fall of 2019.

Happy coding! 🌸