Sha256: 7f82c643e6dd2824eaa744ba87e7fcc7809036ccea13635baf099cf3a9ae5405

Contents?: true

Size: 1.4 KB

Versions: 6

Compression:

Stored size: 1.4 KB

Contents

require 'singleton'
require 'hashie/rash'
require 'set'
require 'routemaster/redis_broker'

module Routemaster
  class Config
    module Classmethods
      def method_missing(method, *args, &block)
        new.send(method, *args, &block)
      end

      def respond_to?(method, include_all = false)
        new.respond_to?(method, include_all)
      end
    end
    extend Classmethods

    def drain_redis
      RedisBroker.instance.get(ENV.fetch('ROUTEMASTER_DRAIN_REDIS'))
    end

    def cache_redis
      RedisBroker.instance.get(ENV.fetch('ROUTEMASTER_CACHE_REDIS'))
    end

    def cache_expiry
      Integer(ENV.fetch('ROUTEMASTER_CACHE_EXPIRY', 86_400 * 365))
    end

    def cache_auth
      Hashie::Rash.new.tap do |result|
        ENV.fetch('ROUTEMASTER_CACHE_AUTH', '').split(',').each do |entry|
          host, username, password = entry.split(':')
          result[Regexp.new(host)] = [username, password]
        end
      end
    end

    def queue_name
      ENV.fetch('ROUTEMASTER_QUEUE_NAME', 'routemaster')
    end

    def drain_tokens
      Set.new(ENV.fetch('ROUTEMASTER_DRAIN_TOKENS').split(','))
    end

    def url_expansions
      Hashie::Rash.new.tap do |result|
        ENV.fetch('ROUTEMASTER_URL_EXPANSIONS', '').split(',').each do |entry|
          host, username, password = entry.split(':')
          result[Regexp.new(host)] = [username, password]
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
routemaster-drain-1.0.5 lib/routemaster/config.rb
routemaster-drain-1.0.4 lib/routemaster/config.rb
routemaster-drain-1.0.3 lib/routemaster/config.rb
routemaster-drain-1.0.2 lib/routemaster/config.rb
routemaster-drain-1.0.1 lib/routemaster/config.rb
routemaster-drain-1.0.0 lib/routemaster/config.rb