Sha256: bdbd20a6392ace86718a3db83b700b8ba3746d112a045cb7ebafe3b91eb39e96

Contents?: true

Size: 658 Bytes

Versions: 4

Compression:

Stored size: 658 Bytes

Contents

module SoapyBing
  class ParamGuard
    class ParamRequiredError < StandardError; end

    def initialize(local_options, env_namespace: '')
      @local_options = local_options
      @env_namespace = env_namespace
    end

    def require!(name)
      local_options.fetch(name, ENV[env_var_name(name)]) || fail(ParamRequiredError, err_msg(name))
    end

    private

    attr_reader :local_options, :env_namespace

    def err_msg(name)
      "#{name} have to be passed explicitly or via ENV['#{env_var_name(name)}']"
    end

    def env_var_name(name)
      (env_namespace.empty? ? name : "#{env_namespace}_#{name}").upcase.tr('-', '_')
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
soapy_bing-0.0.4 lib/soapy_bing/param_guard.rb
soapy_bing-0.0.3 lib/soapy_bing/param_guard.rb
soapy_bing-0.0.2 lib/soapy_bing/param_guard.rb
soapy_bing-0.0.1 lib/soapy_bing/param_guard.rb