Sha256: 8b61cb3b7cd2166239d9cb3c7f697112852a87817bcb1c1023e29d046c007a6f

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

module Propono

  class ProponoConfigurationError < ProponoError
  end

  class Configuration

    def self.add_setting(sym, required: true)
      define_method(sym) do
        required ? get_or_raise(sym) : @settings[sym]
      end

      define_method("#{sym}=") do |new_value|
        @settings[sym] = new_value
      end
    end

    add_setting :access_key
    add_setting :secret_key
    add_setting :queue_region
    add_setting :application_name
    add_setting :logger
    add_setting :max_retries
    add_setting :num_messages_per_poll
    add_setting :slow_queue_enabled, required: false

    add_setting :use_iam_profile, required: false
    add_setting :queue_suffix,    required: false

    def initialize
      @settings = {
        logger:                Propono::Logger.new,
        queue_suffix:          "",
        use_iam_profile:       false,
        max_retries:           0,
        num_messages_per_poll: 1,
        slow_queue_enabled:    true
      }
    end

    private

    def get_or_raise(setting)
      @settings[setting] || raise(ProponoConfigurationError.new("Configuration for #{setting} is not set"))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
propono-2.2.1 lib/propono/configuration.rb
propono-2.2.0 lib/propono/configuration.rb