class Retained::Configuration

Attributes

default_group[R]
group_configs[R]
prefix[RW]
redis[RW]
redis_connection[W]

Public Class Methods

new() click to toggle source
# File lib/retained/configuration.rb, line 12
def initialize
  @redis = { url: 'redis://localhost:6379' }
  @prefix = 'retained'
  @default_group = 'default'
  @group_configs = {}
end

Public Instance Methods

group(group) { |group_configs| ... } click to toggle source

Retrieve the configuration for the group. A block may be provided to configure the group.

# File lib/retained/configuration.rb, line 21
def group(group)
  @group_configs[group.to_s] ||= fetch_group_configuration(group)

  if block_given?
    yield(@group_configs[group.to_s])
    save_group_configuration(group, @group_configs[group.to_s])
  else
    @group_configs[group.to_s].set_defaults
  end

  @group_configs[group.to_s]
end
redis_connection() click to toggle source
# File lib/retained/configuration.rb, line 34
def redis_connection
  @redis_connection ||= RedisConnection.new(redis)
end

Private Instance Methods

fetch_group_configuration(group) click to toggle source
# File lib/retained/configuration.rb, line 40
def fetch_group_configuration(group)
  redis_connection.sadd "#{prefix}:groups", group.to_s
  GroupConfiguration.new(redis_connection.hgetall "#{prefix}:group_config:#{group}")
end
save_group_configuration(group, configuration) click to toggle source
# File lib/retained/configuration.rb, line 45
def save_group_configuration(group, configuration)
  configuration.set_defaults
  redis_connection.hmset "#{prefix}:group_config:#{group}", *configuration.to_hash
  redis_connection.sadd "#{prefix}:groups", group.to_s
  @group_configs[group.to_s] = configuration
end