Class: Settings

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
PersistentSettings
Defined in:
lib/settings.rb

Constant Summary

Constants included from PersistentSettings

PersistentSettings::VERSION

Class Method Summary collapse

Class Method Details

.assignation?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/settings.rb', line 30

def self.assignation?(method_name)
  method_name.to_s.match(/=$/)
end

.define_setter_and_getter(method_name) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/settings.rb', line 15

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

.keysObject



53
54
55
# File 'lib/settings.rb', line 53

def self.keys
  Settings.select(:var).collect { |s| s.var.to_sym }
end

.load_from_persistanceObject



49
50
51
# File 'lib/settings.rb', line 49

def self.load_from_persistance
  load_from_persistance! if connected? && table_exists?
end

.load_from_persistance!Object



43
44
45
46
47
# File 'lib/settings.rb', line 43

def self.load_from_persistance!
  self.all.each do |setting|
    self.send("#{setting.var}=", setting.value)
  end
end

.method_missing(method_name, *args) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/settings.rb', line 6

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

.persist(getter, value) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/settings.rb', line 34

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