Sha256: 82ffe636a8364b78c3c9f09d561cd5da44ea97763cc4907e5c9c05c6451d65fd
Contents?: true
Size: 1.4 KB
Versions: 13
Compression:
Stored size: 1.4 KB
Contents
module RailsOps class Profiler def self.profile(object_id, description = nil, &_block) node = tstore_nodes[object_id] = ::RailsOps::Profiler::Node.new(object_id, description, tstore_current_parent) self.tstore_current_parent = node begin res = yield rescue StandardError node.erroneous! fail ensure self.tstore_current_parent = node.parent node.finish_measure end return res end def self.time(descr = nil, &_block) descr += ' - ' if descr start = Time.now res = yield puts "#{descr}#{((Time.now - start).to_f * 1000).round(1)}ms elapsed.".magenta res end def self.forget_all Thread.current[:rails_ops_profiler][:nodes] = {} end def self.forget(object_id) tstore_nodes.delete(object_id) end def self.node(object_id) tstore_nodes[object_id] || fail("Unkown object_id #{object_id}.") end def self.tstore_current_parent Thread.current[:rails_ops_profiler] ||= {} Thread.current[:rails_ops_profiler][:current_parent] end def self.tstore_current_parent=(parent) Thread.current[:rails_ops_profiler] ||= {} Thread.current[:rails_ops_profiler][:current_parent] = parent end def self.tstore_nodes Thread.current[:rails_ops_profiler] ||= {} Thread.current[:rails_ops_profiler][:nodes] ||= {} end end end
Version data entries
13 entries across 13 versions & 1 rubygems