Module: Metrics::MetricsClass

Defined in:
lib/has_metrics/metrics.rb

Overview

Sets up a class like “SiteMetrics”. These are all CLASS methods:

Instance Method Summary collapse

Instance Method Details

#extra_columnsObject



244
245
246
247
248
249
250
251
252
253
# File 'lib/has_metrics/metrics.rb', line 244

def extra_columns
  reset_column_information
  if @object_class == self
    raise "Cannot determine if there were extra columns for has_metric when using the table itself for storing the metric!  Remove any columns manually"
    [] # We wont know what columns are excessive if the source changed
  else
    (columns.map(&:name) - %w(id created_at updated_at)) - required_columns
  end

end

#metrics_updated_at_columnsObject



231
232
233
# File 'lib/has_metrics/metrics.rb', line 231

def metrics_updated_at_columns
  @object_class.metrics.keys.map{|metric| "updated__#{metric}__at"}
end

#migrate!Object



280
281
282
283
284
285
286
287
288
# File 'lib/has_metrics/metrics.rb', line 280

def migrate!
  # don't migrate if metrics are kept in current class
  return if @object_class == self

  Metrics::Migration.setup(self)
  Metrics::Migration.down unless extra_columns.empty?
  Metrics::Migration.up unless missing_columns.empty?
  reset_column_information
end

#missing_columnsObject



239
240
241
242
# File 'lib/has_metrics/metrics.rb', line 239

def missing_columns
  reset_column_information
  required_columns - (columns.map(&:name) - %w(id created_at updated_at))
end

#object_classObject



227
228
229
# File 'lib/has_metrics/metrics.rb', line 227

def object_class
  @object_class
end

#remigrate!Object



272
273
274
275
276
277
278
# File 'lib/has_metrics/metrics.rb', line 272

def remigrate!
  old_metrics = @object_class.metrics
  @object_class.class_eval { @metrics = [] }
  migrate!
  @object_class.class_eval { @metrics = old_metrics }
  migrate!
end

#required_columnsObject



235
236
237
# File 'lib/has_metrics/metrics.rb', line 235

def required_columns
  @object_class.metrics.keys.map(&:to_s) + metrics_updated_at_columns
end