forked from stan/mongo-rails-instrumentation
/
railtie.rb
34 lines (29 loc) · 883 Bytes
/
railtie.rb
1
2
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
28
29
30
31
32
33
34
require 'moped/rails/instrumentation'
module Moped::Rails::Instrumentation
class Railtie < Rails::Railtie
initializer "moped.rails.instrumentation" do |app|
instrument Moped::Connection, [
:read,
:write
]
ActiveSupport.on_load(:action_controller) do
include ControllerRuntime
end
LogSubscriber.attach_to :moped
end
def instrument(clazz, methods)
clazz.module_eval do
methods.each do |m|
class_eval <<-CODE, __FILE__, __LINE__ + 1
def #{m}_with_instrumentation(*args, &block)
ActiveSupport::Notifications.instrumenter.instrument "mongo.mongo", :name => "#{m}" do
#{m}_without_instrumentation(*args, &block)
end
end
CODE
alias_method_chain m, :instrumentation
end
end
end
end
end