Sha256: 103e09d67a8e78f7606ba6a0fc3ba114818ade035fc7241339456735cca5b2d4

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module Sapience
  module Extensions
    module ActiveRecord
      module ModelMetrics
        def self.included(base)
          base.extend(ClassMethods)
          base.class_eval do
            const_set(:SAPIENCE_MODEL_CREATE_METRICS_KEY,  "model.#{tableized_name}.create")
            const_set(:SAPIENCE_MODEL_UPDATE_METRICS_KEY,  "model.#{tableized_name}.update")
            const_set(:SAPIENCE_MODEL_DESTROY_METRICS_KEY, "model.#{tableized_name}.destroy")
          end
        end

        module ClassMethods
          def tableized_name
            @tableized_name ||= name.tableize.singularize.gsub("/", ".")
          end
        end

        def before_create
          Sapience.metrics.increment(self.class.const_get(:SAPIENCE_MODEL_CREATE_METRICS_KEY))
        end

        def before_update
          Sapience.metrics.increment(self.class.const_get(:SAPIENCE_MODEL_UPDATE_METRICS_KEY))
        end

        def before_destroy
          Sapience.metrics.increment(self.class.const_get(:SAPIENCE_MODEL_DESTROY_METRICS_KEY))
        end

        def tableized_name
          self.class.tableized_name
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sapience-2.0.1 lib/sapience/extensions/active_record/model_metrics.rb