Skip to content

Instantly share code, notes, and snippets.

@chucai
Forked from mattetti/tracepoint_middlware.rb
Last active October 10, 2019 06:32
Show Gist options
  • Save chucai/8037079 to your computer and use it in GitHub Desktop.
Save chucai/8037079 to your computer and use it in GitHub Desktop.
Rails: TracePoint rails request
# update application.rb
# config.middleware.insert_before(ActionDispatch::Static, TracePoint::Middleware)
class TracePoint
class Middleware
def initialize(app)
@app = app
end
def call(env)
stats = {}
trace = TracePoint.new(:call) do |tp|
stats[tp.defined_class] ||= {}
stats[tp.defined_class][tp.method_id] ||= 0
stats[tp.defined_class][tp.method_id] += 1
end
trace.enable
response = @app.call(env)
trace.disable
puts env['PATH_INFO']
puts "#{stats.keys.size} classes used"
puts "#{stats.map{|k,v| v.keys}.flatten.size} methods used"
puts "#{stats.map{|k,v| v.values}.flatten.sum} methods dispatched"
#File.open("tmp/#{env['PATH_INFO'].gsub('/', '_')}_req_stats.json", "w"){|f| f << stats.to_json }
puts ""
response
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment