class Pushr::Configuration

Attributes

app[RW]
connections[RW]
enabled[RW]
id[RW]
type[RW]

Public Class Methods

all() click to toggle source
# File lib/pushr/configuration.rb, line 56
def self.all
  if Pushr::Core.configuration_file # only set if file exists
    read_from_yaml_file
  else
    read_from_redis
  end
end
create(attributes = {}) click to toggle source
# File lib/pushr/configuration.rb, line 30
def self.create(attributes = {})
  m = new(attributes)
  m.save
  m
end
create!(attributes = {}) click to toggle source
# File lib/pushr/configuration.rb, line 36
def self.create!(attributes = {})
  m = new(attributes)
  unless m.save
    raise Pushr::Error::RecordInvalid
  end
  m
end
find(key) click to toggle source
# File lib/pushr/configuration.rb, line 64
def self.find(key)
  config = Pushr::Core.redis { |conn| conn.hget('pushr:configurations', key) }
  instantiate_json(config, key)
end
instantiate(hsh) click to toggle source
# File lib/pushr/configuration.rb, line 85
def self.instantiate(hsh)
  klass = hsh['type'].split('::').reduce(Object) do |a, e|
    if Object.const_defined?(hsh['type'])
      a.const_get e
    end
  end
  return nil if klass == nil
  klass.new(hsh)
end
instantiate_json(config, id) click to toggle source
# File lib/pushr/configuration.rb, line 81
def self.instantiate_json(config, id)
  instantiate(::MultiJson.load(config).merge!(id: id))
end
new(attributes = {}) click to toggle source
# File lib/pushr/configuration.rb, line 11
def initialize(attributes = {})
  attributes.each do |name, value|
    send("#{name}=", value) if respond_to?("#{name}=")
  end
end
read_from_redis() click to toggle source
# File lib/pushr/configuration.rb, line 75
def self.read_from_redis
  configurations = Pushr::Core.redis { |conn| conn.hgetall('pushr:configurations') }
  configurations.each { |key, config| configurations[key] = instantiate_json(config, key) }
  configurations.values.compact
end
read_from_yaml_file() click to toggle source
# File lib/pushr/configuration.rb, line 69
def self.read_from_yaml_file
  filename = Pushr::Core.configuration_file
  configs = File.open(filename) { |fd| YAML.load(fd) }
  configs.map { |hsh| instantiate(hsh) }.compact
end

Public Instance Methods

delete() click to toggle source
# File lib/pushr/configuration.rb, line 48
def delete
  Pushr::Core.redis { |conn| conn.hdel('pushr:configurations', key) }
end
key() click to toggle source
# File lib/pushr/configuration.rb, line 17
def key
  "#{app}:#{name}"
end
queue_depth() click to toggle source
# File lib/pushr/configuration.rb, line 44
def queue_depth
  Pushr::Core.redis { |conn| conn.llen("pushr:#{key}") }
end
save() click to toggle source
# File lib/pushr/configuration.rb, line 21
def save
  if valid?
    Pushr::Core.redis { |conn| conn.hset('pushr:configurations', key, to_json) }
    return true
  else
    return false
  end
end
to_json() click to toggle source
# File lib/pushr/configuration.rb, line 52
def to_json
  MultiJson.dump(to_hash)
end