module ChartMogul::ConfigAttributes

Public Instance Methods

config_accessor(attribute, default_value = nil) click to toggle source
# File lib/chartmogul/config_attributes.rb, line 5
def config_accessor(attribute, default_value = nil)
  define_method(attribute) do
    attr = config.send(attribute) || global_config.send(attribute) || default_value
    if attr.nil?
      raise ConfigurationError, "Configuration for #{attribute} not set"
    end

    attr
  end

  define_method("global_#{attribute}") do
    attr = global_config.send(attribute) || default_value
    if attr.nil?
      raise ConfigurationError, "Global configuration for #{attribute} not set"
    end

    attr
  end

  define_method("#{attribute}=") do |val|
    config.send("#{attribute}=", val)
    Thread.current[ChartMogul::APIResource::THREAD_CONNECTION_KEY] = nil
    val
  end

  define_method("global_#{attribute}=") do |val|
    global_config.send("#{attribute}=", val)
    Thread.current[ChartMogul::APIResource::THREAD_CONNECTION_KEY] = nil
    val
  end
end