Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
rework to satisfy usage of validation_contract
  • Loading branch information
BuonOmo committed Jun 17, 2023
commit e914c44a1ad3a723ea6d909a7d61626409b5f1e6
2 changes: 1 addition & 1 deletion config.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Donate: \e[34mhttps://opencollective.com/rubyconfig/donate\e[0m\n"

s.add_dependency 'deep_merge', '~> 1.2', '>= 1.2.1'

s.add_development_dependency 'dry-validation', *Config::DRY_VALIDATION_REQUIREMENTS
s.add_development_dependency 'dry-validation', *Config::DryValidationRequirements::VERSIONS
s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'

# Testing
Expand Down
24 changes: 23 additions & 1 deletion lib/config/dry_validation_requirements.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# frozen_string_literal: true

module Config
DRY_VALIDATION_REQUIREMENTS = ['~> 1.0', '>= 1.0.0'].freeze
module DryValidationRequirements
VERSIONS = ['~> 1.0', '>= 1.0.0'].freeze

def self.load_dry_validation!
return if defined?(@load_dry_validation)

begin
require 'dry/validation/version'
version = Gem::Version.new(Dry::Validation::VERSION)
unless VERSIONS.all? { |req| Gem::Requirement.new(req).satisfied_by?(version) }
raise LoadError
end
rescue LoadError
raise ::Config::Error, 'Could not find a dry-validation version' \
' matching requirements' \
" (#{VERSIONS.map(&:inspect) * ','})"
end

require 'dry/validation'
@load_dry_validation = true
nil
end
end
end
12 changes: 1 addition & 11 deletions lib/config/validation/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,8 @@ def schema=(value)

def schema(&block)
if block_given?
begin
require 'dry/validation/version'
version = Gem::Version.new(Dry::Validation::VERSION)
unless ::Config::DRY_VALIDATION_REQUIREMENTS.all? { |req| Gem::Requirement.new(req).satisfied_by?(version) }
raise LoadError
end
rescue LoadError
raise ::Config::Error, 'Could not find a dry-validation version matching requirements' \
" (#{::Config::DRY_VALIDATION_REQUIREMENTS.map(&:inspect) * ','})"
end
# Delay require until optional schema validation is requested
require 'dry-validation'
Config::DryValidationRequirements.load_dry_validation!
@schema = Dry::Schema.define(&block)
else
@schema
Expand Down
4 changes: 4 additions & 0 deletions lib/config/validation/validate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ module Config
module Validation
module Validate
def validate!
return unless Config.validation_contract || Config.schema

Config::DryValidationRequirements.load_dry_validation!

validate_using!(Config.validation_contract)
validate_using!(Config.schema)
end
Expand Down