Sha256: 4bf92a50ff3c800486f343920e53d8a128b38794b68bdfa8fd58bf6096e0ff04

Contents?: true

Size: 1.65 KB

Versions: 25

Compression:

Stored size: 1.65 KB

Contents

module RecordStore
  class Zone
    class Config
      include ActiveModel::Validations

      attr_reader :ignore_patterns, :providers, :supports_alias, :implicit_records_templates

      validate :validate_zone_config

      def initialize(ignore_patterns: [], providers: nil, supports_alias: nil, implicit_records_templates: [])
        @ignore_patterns = ignore_patterns.map do |ignore_pattern|
          Zone::Config::IgnorePattern.new(ignore_pattern)
        end
        @implicit_records_templates = implicit_records_templates.map do |filename|
          Zone::Config::ImplicitRecordTemplate.from_file(filename: filename)
        end
        @providers = providers
        @supports_alias = supports_alias
      end

      def supports_alias?
        if @supports_alias.nil?
          valid_providers? && providers.all? { |provider| Provider.const_get(provider).supports_alias? }
        else
          @supports_alias
        end
      end

      def empty_non_terminal_over_wildcard?
        valid_providers? && providers.any? { |provider| Provider.const_get(provider).empty_non_terminal_over_wildcard? }
      end

      def to_hash
        config_hash = {
          providers: providers,
          ignore_patterns: ignore_patterns.map(&:to_hash),
        }
        config_hash.merge!(supports_alias: supports_alias) if supports_alias

        config_hash
      end

      private

      def validate_zone_config
        errors.add(:providers, 'provider specified does not exist') unless valid_providers?
      end

      def valid_providers?
        providers.present? && providers.all? { |provider| Provider.constants.include?(provider.to_s.to_sym) }
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
record_store-8.0.5 lib/record_store/zone/config.rb
record_store-8.0.4 lib/record_store/zone/config.rb
record_store-8.0.3 lib/record_store/zone/config.rb
record_store-8.0.2 lib/record_store/zone/config.rb
record_store-8.0.1 lib/record_store/zone/config.rb
record_store-8.0.0 lib/record_store/zone/config.rb
record_store-7.1.1 lib/record_store/zone/config.rb
record_store-7.1.0 lib/record_store/zone/config.rb
record_store-7.0.1 lib/record_store/zone/config.rb
record_store-7.0.0 lib/record_store/zone/config.rb
record_store-6.7.2 lib/record_store/zone/config.rb
record_store-6.7.1 lib/record_store/zone/config.rb
record_store-6.7.0 lib/record_store/zone/config.rb
record_store-6.6.0 lib/record_store/zone/config.rb
record_store-6.5.11 lib/record_store/zone/config.rb
record_store-6.5.10 lib/record_store/zone/config.rb
record_store-6.5.9 lib/record_store/zone/config.rb
record_store-6.5.8 lib/record_store/zone/config.rb
record_store-6.5.5 lib/record_store/zone/config.rb
record_store-6.5.4 lib/record_store/zone/config.rb