Sha256: fc345f688e84d6f72887e352c3357efc0096c59f73a9eeb138dbbe05996ec550
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
class Settings < ActiveRecord::Base include ::PersistentSettings serialize :value def self.method_missing(method_name, *args) if assignation?(method_name) self.define_setter_and_getter(method_name) self.send(method_name, args.first) else super end end def self.define_setter_and_getter(method_name) getter = method_name.to_s.chop (class << self; self; end).instance_eval do define_method method_name do |value| persist(getter, value) instance_variable_set(:"@#{getter}", value) end define_method getter do instance_variable_get(:"@#{getter}") end end end def self.assignation?(method_name) method_name.to_s.match(/=$/) end def self.persist(getter, value) setting = Settings.where(:var => getter).last if setting setting.update_attribute(:value, value) else Settings.create(:var => getter, :value => value) end end def self.load_from_persistance! self.all.each do |setting| self.send("#{setting.var}=", setting.value) end end def self.load_from_persistance load_from_persistance! if ready? end def self.ready? connected? && table_exists? end def self.keys Settings.select(:var).collect { |s| s.var.to_sym } end load_from_persistance end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
persistent_settings-1.1.1 | lib/settings.rb |