class DynportTools::Settings
Constants
- SETTINGS_KEY
- SETTINGS_UPDATED_AT_KEY
Attributes
defaults[RW]
redis[RW]
Public Class Methods
all()
click to toggle source
# File lib/dynport_tools/settings.rb, line 73 def all if @all.nil? || expired? reload! end @all end
changed?()
click to toggle source
# File lib/dynport_tools/settings.rb, line 89 def changed? @cached_at.nil? || redis.get(SETTINGS_UPDATED_AT_KEY).to_i != @cached_at.to_i end
convert_value_for_key(key, value)
click to toggle source
# File lib/dynport_tools/settings.rb, line 55 def convert_value_for_key(key, value) if defaults[key].is_a?(Numeric) value.to_i elsif [true, false].include?(defaults[key]) value == "true" else value.to_s end end
define_methods_for_key_and_default(key, default)
click to toggle source
# File lib/dynport_tools/settings.rb, line 21 def define_methods_for_key_and_default(key, default) self.class.send(:define_method, key) do get(key) end self.class.send(:define_method, :"set_#{key}") do |value| set_value(key, value) end # bool methods if [true, false].include?(default) self.class.send(:define_method, "#{key}?") do get(key) end self.class.send(:define_method, :"disable_#{key}!") do set_value(key, false) end self.class.send(:define_method, :"enable_#{key}!") do set_value(key, true) end end end
expired?()
click to toggle source
# File lib/dynport_tools/settings.rb, line 85 def expired? @cached_at && Time.now - @cached_at > 60 end
get(key)
click to toggle source
# File lib/dynport_tools/settings.rb, line 65 def get(key) if value = all[key.to_s] convert_value_for_key(key, value) else defaults[key] end end
reload!(timestamp = nil)
click to toggle source
# File lib/dynport_tools/settings.rb, line 80 def reload!(timestamp = nil) @all = redis.hgetall(SETTINGS_KEY) @cached_at = timestamp || Time.now end
set(key_or_hash, default_or_nil = nil)
click to toggle source
# File lib/dynport_tools/settings.rb, line 8 def set(key_or_hash, default_or_nil = nil) self.defaults ||= Hash.new if key_or_hash.is_a?(Hash) key_or_hash.each do |key, default| self.defaults[key.to_sym] = default define_methods_for_key_and_default(key.to_sym, default) end elsif !default_or_nil.nil? self.defaults[key_or_hash.to_sym] = default_or_nil define_methods_for_key_and_default(key_or_hash.to_sym, default_or_nil) end end
set_value(key, value)
click to toggle source
# File lib/dynport_tools/settings.rb, line 46 def set_value(key, value) time = Time.now redis.multi do redis.hset(SETTINGS_KEY, key, value) redis.set(SETTINGS_UPDATED_AT_KEY, time.to_i) end reload!(time) end