railsconfig/config

View on GitHub
lib/config/dry_validation_requirements.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Config
  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