Sha256: da37b3893a1e659af936f06e6db94776d30e0dc1fd1b072a3b0eb52219e59608

Contents?: true

Size: 1.62 KB

Versions: 9

Compression:

Stored size: 1.62 KB

Contents

module RProxy
  class Config
    class << self
      def add_config(name, default_value = nil)
        self.define_method("#{name}") do
          store = instance_variable_get('@store')
          store["#{name}"].nil? ? default_value : store["#{name}"]
        end

        define_set_config_value_method(name)
      end

      def add_exception_config(name)
        self.define_method("#{name}") do
          store = instance_variable_get('@store')
          val = store["#{name}"]
          raise RProxy::EmptyConfigError,
                "#{name} cannot set as empty or nil" if val.nil?
          val
        end

        define_set_config_value_method(name)
      end

      def define_set_config_value_method(name)
        self.define_method("#{name}=") do |value|
          store = instance_variable_get('@store')
          store["#{name}"] = value
        end
      end
    end

    add_config(:instances, 1)
    add_config(:host, '0.0.0.0')
    add_config(:port, 8081)

    add_config(:logger)

    add_config(:callback_url)
    add_config(:usage_threshold, 1 * 1024 * 1024 * 1024)
    add_config(:proxy_buffer, 1024 * 1024 * 10) # default is 10M

    add_config(:enable_cache, true)
    add_config(:cache_clear_threshold, 200)
    add_config(:no_cache_below, 500 * 1024 * 1024)

    add_config(:enable_force_quit, true)

    add_config(:disable_auth, false)
    add_config(:disable_unbind_cb, false)

    # e.g "redis://:p4ssw0rd@10.0.1.1:6380/15"
    add_exception_config(:redis_url)

    add_config(:enable_ssl, true)
    add_exception_config(:ssl_private_key)
    add_exception_config(:ssl_cert)

    def initialize
      @store = {}
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
r_proxy-0.2.8 lib/r_proxy/config.rb
r_proxy-0.2.7 lib/r_proxy/config.rb
r_proxy-0.2.6 lib/r_proxy/config.rb
r_proxy-0.2.5 lib/r_proxy/config.rb
r_proxy-0.2.4 lib/r_proxy/config.rb
r_proxy-0.2.3 lib/r_proxy/config.rb
r_proxy-0.2.2 lib/r_proxy/config.rb
r_proxy-0.2.1 lib/r_proxy/config.rb
r_proxy-0.2.0 lib/r_proxy/config.rb