diff --git a/hanami-validations.gemspec b/hanami-validations.gemspec index 9850fa4..dfbd2c6 100644 --- a/hanami-validations.gemspec +++ b/hanami-validations.gemspec @@ -21,6 +21,7 @@ Gem::Specification.new do |spec| spec.required_ruby_version = ">= 3.0" spec.add_dependency "dry-validation", ">= 1.10", "< 2" + spec.add_dependency "zeitwerk", "~> 2.6.0" spec.add_development_dependency "bundler", ">= 1.6", "< 3" spec.add_development_dependency "rake", "~> 13" diff --git a/lib/hanami-validations.rb b/lib/hanami-validations.rb new file mode 100644 index 0000000..07f55ad --- /dev/null +++ b/lib/hanami-validations.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +require_relative "hanami/validations" diff --git a/lib/hanami/validations.rb b/lib/hanami/validations.rb index 9a09e80..8a7c921 100644 --- a/lib/hanami/validations.rb +++ b/lib/hanami/validations.rb @@ -2,14 +2,29 @@ require "dry/validation" require "delegate" +require "zeitwerk" module Hanami # @since 0.1.0 module Validations - class Error < StandardError; end + # @since 2.0.0 + # @api private + def self.gem_loader + @gem_loader ||= Zeitwerk::Loader.new.tap do |loader| + root = File.expand_path("..", __dir__) + loader.tag = "hanami-validations" + loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-validations.rb") + loader.push_dir(root) + loader.ignore( + "#{root}/hanami-validations.rb", + "#{root}/hanami/validations/version.rb" + ) + end + end - require "hanami/validations/version" - require "hanami/validator" + gem_loader.setup + + class Error < StandardError; end def self.included(klass) super diff --git a/spec/unit/hanami/validator/rule_spec.rb b/spec/unit/hanami/validator/rule_spec.rb index 7174e2a..e45832b 100644 --- a/spec/unit/hanami/validator/rule_spec.rb +++ b/spec/unit/hanami/validator/rule_spec.rb @@ -10,7 +10,7 @@ RSpec.describe Hanami::Validator do end rule(:email) do - key.failure("has invalid format") unless /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i.match?(value) + key.failure("has invalid format") unless /\A[\w+\-.]+@[a-z\d-]+(\.[a-z\d-]+)*\.[a-z]+\z/i.match?(value) end rule(:age) do