3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/model_observer/active_record3.rb', line 3
def self.enable
require 'active_record'
::ActiveRecord::Inheritance::ClassMethods.class_eval do
alias_method :origin_instantiate, :instantiate
def instantiate(record)
started_at = Time.now
instance = origin_instantiate(record)
ModelObserver::Collector.add_metric(ModelObserver::Metric.new(instance, started_at, Time.now))
instance
end
end
::ActiveRecord::Querying.class_eval do
alias_method :origin_find_by_sql, :find_by_sql
def find_by_sql(sql, binds = [])
::ActiveSupport::Notifications.instrumenter.instrument(
"instantiate.model_observer",
:sql => connection.to_sql(sanitize_sql(sql), binds),
:name => "#{name} Instantiate") { origin_find_by_sql(sql, binds) }
end
end
end
|