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
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_columns ⇒ Object
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_columns ⇒ Object
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_class ⇒ Object
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_columns ⇒ Object
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 |