Sha256: 7c80157166da7eb037f8ad61d9436acb1ffa8d36aca62243732dc55f2451f282

Contents?: true

Size: 1.43 KB

Versions: 116

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

module Karafka
  # Env management class to get and set environment for Karafka
  class Env < String
    # Keys where we look for environment details for Karafka
    LOOKUP_ENV_KEYS = %w[
      KARAFKA_ENV
      RACK_ENV
      RAILS_ENV
    ].freeze

    # Default fallback env
    DEFAULT_ENV = 'development'

    private_constant :LOOKUP_ENV_KEYS, :DEFAULT_ENV

    # @return [Karafka::Env] env object
    # @note Will load appropriate environment automatically
    def initialize
      super('')

      LOOKUP_ENV_KEYS
        .map { |key| ENV[key] }
        .compact
        .first
        .then { |env| env || DEFAULT_ENV }
        .then { |env| replace(env) }
    end

    # @param method_name [String] method name
    # @param include_private [Boolean] should we include private methods as well
    # @return [Boolean] true if we respond to a given missing method, otherwise false
    def respond_to_missing?(method_name, include_private = false)
      (method_name[-1] == '?') || super
    end

    # Reacts to missing methods, from which some might be the env checks.
    # If the method ends with '?' we assume, that it is an env check
    # @param method_name [String] method name for missing or env name with question mark
    # @param arguments [Array] any arguments that we pass to the method
    def method_missing(method_name, *arguments)
      method_name[-1] == '?' ? self == method_name[0..-2] : super
    end
  end
end

Version data entries

116 entries across 116 versions & 1 rubygems

Version Path
karafka-2.2.2 lib/karafka/env.rb
karafka-2.2.1 lib/karafka/env.rb
karafka-2.2.0 lib/karafka/env.rb
karafka-2.1.13 lib/karafka/env.rb
karafka-2.1.12 lib/karafka/env.rb
karafka-2.1.11 lib/karafka/env.rb
karafka-2.1.10 lib/karafka/env.rb
karafka-2.1.9 lib/karafka/env.rb
karafka-2.1.8 lib/karafka/env.rb
karafka-2.1.7 lib/karafka/env.rb
karafka-2.1.6 lib/karafka/env.rb
karafka-2.1.5 lib/karafka/env.rb
karafka-2.1.5.beta1 lib/karafka/env.rb
karafka-2.1.4 lib/karafka/env.rb
karafka-2.1.3 lib/karafka/env.rb
karafka-2.1.2 lib/karafka/env.rb
karafka-2.1.1 lib/karafka/env.rb
karafka-2.1.0 lib/karafka/env.rb
karafka-2.0.41 lib/karafka/env.rb
karafka-2.0.40 lib/karafka/env.rb