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



226
227
228
229
230
231
232
233
234
235
# File 'lib/has_metrics/metrics.rb', line 226

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



213
214
215
# File 'lib/has_metrics/metrics.rb', line 213

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

#migrate!Object



262
263
264
265
266
267
268
269
270
# File 'lib/has_metrics/metrics.rb', line 262

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



221
222
223
224
# File 'lib/has_metrics/metrics.rb', line 221

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

#object_classObject



209
210
211
# File 'lib/has_metrics/metrics.rb', line 209

def object_class
  @object_class
end

#remigrate!Object



254
255
256
257
258
259
260
# File 'lib/has_metrics/metrics.rb', line 254

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

#required_columnsObject



217
218
219
# File 'lib/has_metrics/metrics.rb', line 217

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