Class: Circonus::BaseModel

Inherits:
Object
  • Object
show all
Defined in:
lib/circonus/models/base_model.rb

Constant Summary collapse

ACTIONS_CLASS =
{
    all: Circonus::Actions::ClassMethods::All,
    find: Circonus::Actions::ClassMethods::Find,
    create: Circonus::Actions::ClassMethods::Create,
    search: Circonus::Actions::ClassMethods::Search
}
ACTIONS_INSTANCE =
{
    create: Circonus::Actions::InstanceMethods::Create,
    update: Circonus::Actions::InstanceMethods::Update,
    destroy: Circonus::Actions::InstanceMethods::Destroy
}

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data = {}) ⇒ BaseModel

Returns a new instance of BaseModel.



50
51
52
53
54
55
# File 'lib/circonus/models/base_model.rb', line 50

def initialize(data = {})
  self.class::attributes.each do |attribute|
    value = data[attribute.to_s].nil? ? data[attribute.to_sym] : data[attribute.to_s]
    send("#{attribute}=", value)
  end
end

Class Attribute Details

.attributesObject (readonly)

Returns the value of attribute attributes.



17
18
19
# File 'lib/circonus/models/base_model.rb', line 17

def attributes
  @attributes
end

Class Method Details

.actions(*acts) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/circonus/models/base_model.rb', line 32

def actions(*acts)
  acts.each do |action|
    module_class = ACTIONS_CLASS[action]
    module_instance = ACTIONS_INSTANCE[action]
    if module_class || module_instance
      extend(module_class) if module_class
      include(module_instance) if module_instance
    else
      fail 'Wrong action'
    end
  end
end

.circonus_path(path) ⇒ Object



19
20
21
# File 'lib/circonus/models/base_model.rb', line 19

def circonus_path(path)
  @circonus_path = path.to_s
end

.clientObject



45
46
47
# File 'lib/circonus/models/base_model.rb', line 45

def client
  ::Circonus.client
end

.fields(*attributes) ⇒ Object



27
28
29
30
# File 'lib/circonus/models/base_model.rb', line 27

def fields(*attributes)
  @attributes = attributes.map(&:to_s)
  attr_accessor(*attributes)
end

.pathObject



23
24
25
# File 'lib/circonus/models/base_model.rb', line 23

def path
  @circonus_path ||= name.split('::').last.gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
end

Instance Method Details

#attributesObject



61
62
63
# File 'lib/circonus/models/base_model.rb', line 61

def attributes
  Hash[self.class::attributes.map { |attr| [attr, send(attr)] }]
end

#clientObject



69
70
71
# File 'lib/circonus/models/base_model.rb', line 69

def client
  self.class.client
end

#filtered_attributesObject



65
66
67
# File 'lib/circonus/models/base_model.rb', line 65

def filtered_attributes
  attributes.reject { |_k, v| v.nil? }
end

#idObject



57
58
59
# File 'lib/circonus/models/base_model.rb', line 57

def id
  _cid ? _cid.split('/').last : nil
end

#pathObject



73
74
75
# File 'lib/circonus/models/base_model.rb', line 73

def path
  self.class.path
end