Module: Profiler
- Defined in:
- lib/profiler.rb,
lib/profiler/engine.rb,
lib/profiler/railtie.rb,
lib/profiler/version.rb,
lib/profiler/mcp/server.rb,
lib/profiler/job_profiler.rb,
lib/profiler/configuration.rb,
lib/profiler/explain_runner.rb,
lib/profiler/mcp/file_cache.rb,
lib/profiler/models/profile.rb,
lib/profiler/models/sql_query.rb,
lib/profiler/mcp/body_formatter.rb,
lib/profiler/mcp/path_extractor.rb,
lib/profiler/storage/base_store.rb,
lib/profiler/storage/blob_store.rb,
lib/profiler/storage/file_store.rb,
lib/profiler/storage/redis_store.rb,
lib/profiler/mcp/tools/query_jobs.rb,
lib/profiler/storage/memory_store.rb,
lib/profiler/storage/sqlite_store.rb,
lib/profiler/models/timeline_event.rb,
lib/profiler/mcp/tools/explain_query.rb,
lib/profiler/collectors/job_collector.rb,
lib/profiler/collectors/log_collector.rb,
lib/profiler/mcp/tools/clear_profiles.rb,
lib/profiler/mcp/tools/query_profiles.rb,
lib/profiler/collectors/ajax_collector.rb,
lib/profiler/collectors/base_collector.rb,
lib/profiler/collectors/dump_collector.rb,
lib/profiler/collectors/http_collector.rb,
lib/profiler/collectors/i18n_collector.rb,
lib/profiler/collectors/view_collector.rb,
lib/profiler/mcp/resources/n1_patterns.rb,
lib/profiler/mcp/resources/recent_jobs.rb,
lib/profiler/mcp/tools/analyze_queries.rb,
lib/profiler/collectors/cache_collector.rb,
lib/profiler/mcp/resources/slow_queries.rb,
lib/profiler/mcp/tools/get_profile_ajax.rb,
lib/profiler/mcp/tools/get_profile_http.rb,
lib/profiler/middleware/cors_middleware.rb,
lib/profiler/collectors/routes_collector.rb,
lib/profiler/mcp/tools/get_profile_dumps.rb,
lib/profiler/middleware/toolbar_injector.rb,
lib/profiler/collectors/request_collector.rb,
lib/profiler/mcp/tools/get_profile_detail.rb,
app/controllers/profiler/assets_controller.rb,
lib/profiler/collectors/database_collector.rb,
lib/profiler/mcp/resources/recent_requests.rb,
lib/profiler/collectors/exception_collector.rb,
lib/profiler/middleware/profiler_middleware.rb,
app/controllers/profiler/api/ajax_controller.rb,
app/controllers/profiler/api/jobs_controller.rb,
app/controllers/profiler/profiles_controller.rb,
lib/profiler/collectors/flamegraph_collector.rb,
app/controllers/profiler/api/explain_controller.rb,
app/controllers/profiler/api/toolbar_controller.rb,
app/controllers/profiler/application_controller.rb,
lib/profiler/instrumentation/sidekiq_middleware.rb,
app/controllers/profiler/api/profiles_controller.rb,
app/controllers/profiler/api/outbound_http_controller.rb,
lib/profiler/instrumentation/net_http_instrumentation.rb,
lib/profiler/instrumentation/active_job_instrumentation.rb
Defined Under Namespace
Modules: Api, Collectors, ExplainRunner, I18nLookupTracker, Instrumentation, MCP, Middleware, Models, Storage
Classes: ApplicationController, AssetsController, Configuration, Engine, Error, JobProfiler, ProfilesController, Railtie
Constant Summary
collapse
- VERSION =
"0.9.1"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.configuration ⇒ Object
12
13
14
|
# File 'lib/profiler.rb', line 12
def configuration
@configuration ||= Configuration.new
end
|
Class Method Details
16
17
18
|
# File 'lib/profiler.rb', line 16
def configure
yield(configuration)
end
|
.dump(value, label = nil) ⇒ Object
Dump a variable to the profiler Usage: Profiler.dump(variable, “optional label”)
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/profiler.rb', line 52
def dump(value, label = nil)
return unless enabled?
caller_location = caller_locations(1, 1).first
file = caller_location.path
line = caller_location.lineno
Thread.current[:profiler_dumps] ||= []
Thread.current[:profiler_dumps] << {
value: value,
label: label,
file: file,
line: line,
timestamp: Time.now
}
value
end
|
.enabled? ⇒ Boolean
24
25
26
|
# File 'lib/profiler.rb', line 24
def enabled?
configuration.enabled
end
|
.measure(label, metadata: {}, &block) ⇒ Object
Instrument an arbitrary code block and record it in the FlameGraph. Usage: Profiler.measure(“payment.stripe_charge”, metadata: { amount: 1000 }) { Stripe::Charge.create(…) }
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/profiler.rb', line 30
def measure(label, metadata: {}, &block)
return yield unless enabled?
collector = Thread.current[:profiler_flamegraph_collector]
return yield unless collector
started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
result = yield
finished_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
collector.record_custom_event(
label: label,
started_at: started_at,
finished_at: finished_at,
metadata: metadata
)
result
end
|
.storage ⇒ Object
20
21
22
|
# File 'lib/profiler.rb', line 20
def storage
@storage ||= configuration.storage_backend
end
|