Class: BrainzLab::DevTools::Data::Collector
- Inherits:
-
Object
- Object
- BrainzLab::DevTools::Data::Collector
- Defined in:
- lib/brainzlab/devtools/data/collector.rb
Constant Summary collapse
- THREAD_KEY =
:brainzlab_devtools_data
Class Method Summary collapse
- .active? ⇒ Boolean
- .add_log(level:, message:, log_data: nil) ⇒ Object
- .add_sql_query(name:, duration:, sql:, cached: false, source: nil) ⇒ Object
- .add_view(type:, template:, duration:, layout: nil) ⇒ Object
- .end_request ⇒ Object
- .get_request_data ⇒ Object
- .start_request(env) ⇒ Object
Class Method Details
.active? ⇒ Boolean
30 31 32 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 30 def active? !Thread.current[THREAD_KEY].nil? end |
.add_log(level:, message:, log_data: nil) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 85 def add_log(level:, message:, log_data: nil) request_data = Thread.current[THREAD_KEY] return unless request_data request_data[:logs] << { level: level, message: , data: log_data, timestamp: Time.now.utc } end |
.add_sql_query(name:, duration:, sql:, cached: false, source: nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 57 def add_sql_query(name:, duration:, sql:, cached: false, source: nil) data = Thread.current[THREAD_KEY] return unless data data[:sql_queries] << { name: name, duration: duration.round(2), sql: sql, sql_pattern: normalize_sql(sql), cached: cached, source: source, timestamp: Time.now.utc } end |
.add_view(type:, template:, duration:, layout: nil) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 72 def add_view(type:, template:, duration:, layout: nil) data = Thread.current[THREAD_KEY] return unless data data[:views] << { type: type, template: template, duration: duration.round(2), layout: layout, timestamp: Time.now.utc } end |
.end_request ⇒ Object
23 24 25 26 27 28 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 23 def end_request unsubscribe_from_events data = Thread.current[THREAD_KEY] Thread.current[THREAD_KEY] = nil data end |
.get_request_data ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 34 def get_request_data data = Thread.current[THREAD_KEY] || {} return {} if data.empty? context = defined?(BrainzLab::Context) ? BrainzLab::Context.current : nil duration_ms = data[:started_at] ? ((Time.now.utc - data[:started_at]) * 1000).round(2) : 0 { timing: { started_at: data[:started_at], duration_ms: duration_ms }, request: build_request_data(data, context), controller: build_controller_data(context), database: build_database_data(data[:sql_queries] || []), views: build_views_data(data[:views] || []), logs: data[:logs] || [], memory: build_memory_data(data), user: context&.user, breadcrumbs: context&..to_a } end |
.start_request(env) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/brainzlab/devtools/data/collector.rb', line 10 def start_request(env) Thread.current[THREAD_KEY] = { started_at: Time.now.utc, sql_queries: [], views: [], logs: [], memory_before: get_memory_usage, env: env } subscribe_to_events end |