Sha256: 2b5f7682e3ade636d9dc46a1354dd70fc576356da883a83c1a3d78e19767ba1c

Contents?: true

Size: 906 Bytes

Versions: 26

Compression:

Stored size: 906 Bytes

Contents

module Honeybadger
  class Config
    class Env < ::Hash
      CONFIG_KEY = /\AHONEYBADGER_(.+)\Z/.freeze
      CONFIG_MAPPING = Hash[DEFAULTS.keys.map {|k| [k.to_s.upcase.gsub(KEY_REPLACEMENT, '_'), k] }].freeze
      ARRAY_VALUES = Regexp.new('\s*,\s*').freeze

      def initialize(env = ENV)
        env.each_pair do |k,v|
          next unless k.match(CONFIG_KEY)
          next unless config_key = CONFIG_MAPPING[$1]
          self[config_key] = cast_value(v, OPTIONS[config_key][:type])
        end
      end

      private

      def cast_value(value, type = String)
        v = value.to_s

        if type == Boolean
          !!(v =~ /\A(true|t|1)\z/i)
        elsif type == Array
          v.split(ARRAY_VALUES).map(&method(:cast_value))
        elsif type == Integer
          v.to_i
        elsif type == Float
          v.to_f
        else
          v
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
honeybadger-2.7.2 lib/honeybadger/config/env.rb
honeybadger-2.7.1 lib/honeybadger/config/env.rb
honeybadger-2.7.0 lib/honeybadger/config/env.rb
honeybadger-2.6.1 lib/honeybadger/config/env.rb
honeybadger-2.6.0 lib/honeybadger/config/env.rb
honeybadger-2.5.3 lib/honeybadger/config/env.rb
honeybadger-2.5.2 lib/honeybadger/config/env.rb
honeybadger-2.5.1 lib/honeybadger/config/env.rb
honeybadger-2.5.0 lib/honeybadger/config/env.rb
honeybadger-2.4.1 lib/honeybadger/config/env.rb
honeybadger-2.4.0 lib/honeybadger/config/env.rb
honeybadger-2.3.3 lib/honeybadger/config/env.rb
honeybadger-2.3.2 lib/honeybadger/config/env.rb
honeybadger-2.3.2.beta.1 lib/honeybadger/config/env.rb
honeybadger-2.3.1 lib/honeybadger/config/env.rb
honeybadger-2.3.0 lib/honeybadger/config/env.rb
honeybadger-2.2.0 lib/honeybadger/config/env.rb
honeybadger-2.2.0.beta.1 lib/honeybadger/config/env.rb
honeybadger-2.1.6.beta.1 lib/honeybadger/config/env.rb
honeybadger-2.1.5 lib/honeybadger/config/env.rb