Sha256: 5a251bb880c46b8b0268025badf602c21bc6b71e55a0a979283ab8c675cf1bb7

Contents?: true

Size: 1.27 KB

Versions: 9

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Light
  module Services
    class << self
      def configure
        yield config
      end

      def config
        @config ||= Config.new
      end
    end

    class Config
      # Constants
      DEFAULTS = {
        use_transactions: true,

        load_errors: true,
        break_on_error: true,
        raise_on_error: false,
        rollback_on_error: true,

        load_warnings: true,
        break_on_warning: false,
        raise_on_warning: false,
        rollback_on_warning: false
      }.freeze

      # Getters / Setters
      attr_accessor :use_transactions,
                    :load_errors, :break_on_error, :raise_on_error, :rollback_on_error,
                    :load_warnings, :break_on_warning, :raise_on_warning, :rollback_on_warning

      def initialize
        reset_to_defaults!
      end

      def set(key, value)
        instance_variable_set("@#{key}", value)
      end

      def get(key)
        instance_variable_get("@#{key}")
      end

      def reset_to_defaults!
        DEFAULTS.each do |key, value|
          set(key, value)
        end
      end

      def to_h
        DEFAULTS.keys.map { |key| [key, get(key)] }.to_h
      end

      def merge(config)
        to_h.merge(config)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
light-services-2.0.0.rc9 lib/light/services/config.rb
light-services-2.0.0.rc8 lib/light/services/config.rb
light-services-2.0.0.rc7 lib/light/services/config.rb
light-services-2.0.0.rc6 lib/light/services/config.rb
light-services-2.0.0.rc4 lib/light/services/config.rb
light-services-2.0.0.rc3 lib/light/services/config.rb
light-services-2.0.0.rc2 lib/light/services/config.rb
light-services-2.0.0.rc1 lib/light/services/config.rb
light-services-2.0.0.beta1 lib/light/services/config.rb