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
- #extra_columns ⇒ Object
- #metrics_updated_at_columns ⇒ Object
- #migrate! ⇒ Object
- #missing_columns ⇒ Object
- #object_class ⇒ Object
- #remigrate! ⇒ Object
- #required_columns ⇒ Object
Instance Method Details
#extra_columns ⇒ Object
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_columns ⇒ Object
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_columns ⇒ Object
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_class ⇒ Object
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_columns ⇒ Object
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 |