dry-validation

Validation library with type-safe schemas and rules

MIT License

Downloads
66.6M
Stars
1.3K
Committers
77

Bot releases are visible (Hide)

dry-validation -

Published by solnic over 5 years ago

This release is a complete rewrite on top of dry-schema that uses contract classes to define schema and validation rules. It's not backward-compatible. This release addressed over 150 known issues, including bugs and missing features.

See the list of all addressed issues as well as issues that were moved to dry-schema and addressed there.

✨ Release highlights ✨

  • New Dry::Validation::Contract API for defining contract classes with schemas and validation rules
  • Improved message backends with support for key and base messages, and arbitrary meta-data (like error codes etc.)
  • Support for defining rules for array elements ie rule(:items).each { ... }
  • Support for macros that encapsulate common rule logic
  • Built-in :acceptance macro

Compare v0.13.3...v1.0.0

dry-validation -

Published by solnic over 5 years ago

Fixed

  • Caching message templates uses restricted set of known keys to calculate cache keys (solnic)

Compare v0.13.1...v0.13.2

dry-validation -

Published by solnic over 5 years ago

Added

  • [EXPERIMENTAL] Validation.register_macro for registering global macros (solnic)
  • [EXPERIMENTAL] Contract.register_macro for registering macros available to specific contract classes (solnic)
  • Dry::Validation.Contract shortcut for quickly defining a contract and getting its instance back (solnic)
  • New configuration option config.locale for setting the default locale (solnic)

Fixed

  • config/errors.yml are now bundled with the gem, rc2 was broken because of this (solnic)

Compare v1.0.0.rc2...v1.0.0.rc3

dry-validation - v1.0.0.rc2 (YANKED)

Published by solnic over 5 years ago

This was yanked on rubygems.org because the bundled gem was missing config directory, thus it was not possible to require it. It was fixed in rc3.

Added

  • [EXPERIMENTAL] support for registering macros via Dry::Validation::Macros.register(:your_macro, &block) (solnic)
  • [EXPERIMENTAL] :acceptance as the first built-in macro (issue #157) (solnic)

Fixed

  • Passing invalid argument to failure will raise a meaningful error instead of crashing (solnic)

Changed

  • In rule validation blocks, values is now an instance of a hash-like Dry::Validation::Values class, rather than Dry::Schema::Result. This gives more convenient access to data within rules (solnic)
  • Dependency on dry-schema was updated to ~> 1.0 (solnic)

Compare v1.0.0.rc1...v1.0.0.rc2

dry-validation -

Published by solnic over 5 years ago

Added

  • :hints extension is back (solnic)
  • Result objects have access to the context object which is shared between rules (flash-gordon)

Fixed

  • Multiple hint messages no longer crash message set (flash-gordon)
  • Contract#inspect no longer crashes (solnic)

Changed

  • Dependency on dry-schema was bumped to ~> 0.6 - this pulls in dry-types 1.0.0 and dry-logic 1.0.0 (solnic)
  • Dependency on dry-initializer was bumped to ~> 3.0 (solnic)

Compare v1.0.0.beta2...v1.0.0.rc1

dry-validation - v1.0.0.beta2

Published by solnic over 5 years ago

Added

  • Support for arbitrary meta-data in failures, ie:

    class NewUserContract < Dry::Validation::Contract
      params do
        required(:login).filled(:string)
      end
    
      rule(:login) do
        key.failure(text: 'is taken', code: 123) unless db.unique?(values[:login])
      end
    end
    

    Now your error hash will include { login: [{ text: 'is taken', code: 123 }] } (solnic + flash-gordon)

Changed

  • [BREAKING] Error was renamed to Message as it is a more generic concept (solnic)
  • [BREAKING] ErrorSet was renamed to MessageSet for consistency (solnic)
  • [BREAKING] :monads extension wraps entire result objects in Success or Failure (flash-gordon)

Compare v1.0.0.beta1...v1.0.0.beta2

dry-validation - v1.0.0.beta1

Published by solnic over 5 years ago

Added

  • New API for setting failures base.failure for base errors and key.failure for key errors (solnic)
  • Support for base errors associated with a key even when child keys have errors too (solnic)
  • Support for base errors not associated with any key (solnic)
  • Result objects use ErrorSet object now for managing messages (solnic)
  • Nested keys are properly handled when generating messages hash (issue #489) (flash-gordon + solnic)
  • Result objects support locale and full options now (solnic)
  • Ability to configure top_namespace for messages, which will be used for both schema and rule localization (solnic)
  • Rule blocks receive a context object that you can use to share data between rules (solnic)

Changed

  • [BREAKING] Result#errors returns an instance of ErrorSet now, it's an enumerable, coerible to a hash (solnic)
  • [BREAKING] failure was removed in favor of key.failure or key(:foo).failure (solnic)
  • [BREAKING] Result#to_hash was removed (flash-gordon)

Compare v1.0.0.alpha2...v1.0.0.beta1

dry-validation -

Published by flash-gordon over 5 years ago

v0.13.1 2019-03-22

Changed

  • dry-types was locked to ~> 0.14.0 (flash-gordon)

Compare v0.13.0...v0.13.1

dry-validation -

Published by solnic over 5 years ago

The first round of bug fixes. Thanks for testing <3!

Fixed

  • Errors with nested messages are correctly built (flash-gordon)
  • Messages for nested keys are correctly resolved (solnic)
  • A message for a nested key is resolved when it's defined under errors.rule.%{key} too, but a message under nested key will override it (solnic)

Changed

  • When a message template is not found a more meaningful error is raised that includes both rule identifier and key path (solnic)

Compare v1.0.0.alpha1...v1.0.0.alpha2

dry-validation -

Published by solnic over 5 years ago

Complete rewrite on top of dry-schema.

Added

  • [BREAKING] Dry::Validation::Contract as a replacement for validation schemas (solnic)
  • [BREAKING] New rule DSL with an improved API for setting error messages (solnic)

Compare v0.13.0...v1.0.0.alpha1

dry-validation -

Published by flash-gordon over 5 years ago

v0.12.3 2019-01-29

Changed

  • [internal] dyr-logic was pinned to ~> 0.4.2 (flash-gordon)

Compare v0.12.2...v0.12.3

dry-validation -

Published by flash-gordon over 5 years ago

v0.12.2 2018-08-29

Fixed

  • Use correct key names for rule messages when using i18n (jozzi05)

Compare v0.12.1...v0.12.2

dry-validation -

Published by flash-gordon over 6 years ago

v0.12.1 2018-07-06

Fixed

  • [internal] fixed deprecation warnings (flash-gordon)
dry-validation -

Published by flash-gordon over 6 years ago

v0.12.0 2018-05-31

Changed

  • Code updated to work with dry-types 0.13.1 and dry-struct 0.5.0, these are now minimal supported versions (flash-gordon)
  • [BREAKING] Form was renamed to Params to be consistent with the latest changes from dry-types. You can require 'dry/validation/compat/form' to use the previous names but it will be removed in the next version (flash-gordon)

Compare v0.11.1...v0.12.0

dry-validation - v0.11.0

Published by solnic over 7 years ago

Changed

  • [internal] input processor compilers have been updated to work with new dry-types' AST (GustavoCaso)