Module: Metrics

Defined in:
lib/has_metrics/metrics.rb

Defined Under Namespace

Modules: ClassMethods, MetricsClass Classes: Migration

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/has_metrics/metrics.rb', line 2

def self.included(base)
  base.extend ClassMethods

  klass_name = "#{base}Metrics"
  klass = begin
    Object.const_get(klass_name)
  rescue
    Object.const_set(klass_name, Class.new(ActiveRecord::Base))
  end
  klass.class_eval do
    extend Metrics::MetricsClass
    belongs_to base.to_s.underscore.to_sym, :foreign_key => 'id'
    @object_class = base
  end

  base.class_eval do
    if klass.table_exists?
      @metrics_class = klass
      has_one :metrics, :class_name => klass_name, :foreign_key => 'id', :dependent => :destroy
    else
      @object_class = base
      @metrics_class = base
      base.extend(Metrics::MetricsClass)
    end

    def metrics
      @metrics ||= self.class.metrics_class.find_or_initialize_by_id(id)
    end
  end
end

Instance Method Details

#update_metrics!(*args) ⇒ Object

END CLASS METHODS, START INSTANCE METHODS



199
200
201
202
203
# File 'lib/has_metrics/metrics.rb', line 199

def update_metrics!(*args)
  self.class.metrics.each do |metric, options|
    send(metric, *args)
  end
end