Class: ConfigureMe::Base

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Callbacks, ActiveModel::Naming, Loading
Includes:
ActiveModel::AttributeMethods, ActiveModel::Conversion, ActiveModel::Dirty, ActiveModel::Validations, AttributeMethods, Caching, Identity, Naming, Nesting, Persistence, Persisting, Validations, Singleton
Defined in:
lib/configure_me.rb,
lib/configure_me/base.rb,
lib/configure_me/naming.rb,
lib/configure_me/caching.rb,
lib/configure_me/nesting.rb,
lib/configure_me/persisting.rb,
lib/configure_me/persistence.rb,
lib/configure_me/validations.rb,
lib/configure_me/attribute_methods.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Loading

from_hash, load

Methods included from Persisting

#persist_guard, #read_persist, #write_persist

Methods included from Persistence

#update_attributes

Methods included from Nesting

#all_configs, #children, #nest, #parent_config, #parent_config=

Methods included from Identity

#config_key, #config_name, #storage_key

Methods included from Caching

#read_cache, #write_cache

Methods included from AttributeMethods

#read_attribute, #write_attribute

Class Method Details

.cache_meObject



4
5
6
# File 'lib/configure_me/caching.rb', line 4

def cache_me
  @caching = true
end

.caching?Boolean

Returns:

  • (Boolean)


8
9
10
11
# File 'lib/configure_me/caching.rb', line 8

def caching?
  @caching ||= false
  @caching && !ConfigureMe.cache_object.nil?
end

.class_settingsObject



13
14
15
# File 'lib/configure_me/attribute_methods.rb', line 13

def class_settings
  @class_settings ||= {}
end

.define_attribute_methods(force = false) ⇒ Object



17
18
19
20
21
# File 'lib/configure_me/attribute_methods.rb', line 17

def define_attribute_methods(force = false)
  return if class_settings.empty?
  undefine_attribute_methods if force
  super(class_settings.keys)
end

.find_by_id(id) ⇒ Object



66
67
68
69
70
71
72
73
# File 'lib/configure_me/base.rb', line 66

def find_by_id(id)
  configs.each do |config|
    if config.config_key.eql?(id)
      return config.instance
    end
  end
  nil
end

.inherited(subclass) ⇒ Object



41
42
43
44
# File 'lib/configure_me/base.rb', line 41

def inherited(subclass)
  super
  configs << subclass
end

.method_missing(method_sym, *args) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/configure_me/base.rb', line 46

def method_missing(method_sym, *args)
  if instance.respond_to?(method_sym)
    instance.send(method_sym, *args)
  else
    super
  end
end

.model_nameObject



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

def model_name
  if persisting?
    ConfigureMe.persistence_klass.model_name
  else
    super
  end
end

.nest_me(klass, name = nil) ⇒ Object



4
5
6
# File 'lib/configure_me/nesting.rb', line 4

def nest_me(klass, name = nil)
  klass.instance.nest(self)
end

.persist_meObject



4
5
6
# File 'lib/configure_me/persisting.rb', line 4

def persist_me
  @persisting = true
end

.persisting?Boolean

Returns:

  • (Boolean)


8
9
10
11
# File 'lib/configure_me/persisting.rb', line 8

def persisting?
  @persisting ||= false
  @persisting && !ConfigureMe.persistence_klass.nil?
end

.respond_to?(method_sym, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
57
58
59
60
61
62
63
64
# File 'lib/configure_me/base.rb', line 54

def respond_to?(method_sym, include_private = false)
  instance.children.each_pair do |name, instance|
    if name.to_s.eql?(method_sym.to_s)
      return true
    end
  end
  if class_settings.key?(method_sym)
    return true
  end
  super
end

.setting(name, *args) ⇒ Object



8
9
10
11
# File 'lib/configure_me/attribute_methods.rb', line 8

def setting(name, *args)
  class_settings[name.to_sym] = Setting.new(name.to_sym, *args)
  define_attribute_methods(true)
end

Instance Method Details

#persisted?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/configure_me/base.rb', line 18

def persisted?
  true
end

#save(options = {}) ⇒ Object



8
9
10
11
12
# File 'lib/configure_me/validations.rb', line 8

def save(options={})
  run_callbacks :validation do
    perform_validations(options) ? super : false
  end
end

#to_keyObject



22
23
24
25
26
27
28
29
30
# File 'lib/configure_me/base.rb', line 22

def to_key
  if persisted?
    key = parent_config.nil? ? [] : parent_config.to_key
    key << self.config_name
    key
  else
    nil
  end
end

#to_paramObject



32
33
34
35
36
37
38
# File 'lib/configure_me/base.rb', line 32

def to_param
  if persisted?
    to_key.join('-')
  else
    nil
  end
end

#valid?(context = nil) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
# File 'lib/configure_me/validations.rb', line 14

def valid?(context = nil)
  context ||= (persisted? ? :update : :create)
  output = super(context)
  errors.empty? && output
end