Module: QueryGuard
- Defined in:
- lib/query_guard.rb,
lib/query_guard.rb,
lib/query_guard/cli.rb,
lib/query_guard/rspec.rb,
lib/query_guard/store.rb,
lib/query_guard/trace.rb,
lib/query_guard/budget.rb,
lib/query_guard/client.rb,
lib/query_guard/config.rb,
lib/query_guard/publish.rb,
lib/query_guard/version.rb,
lib/query_guard/exporter.rb,
lib/query_guard/security.rb,
lib/query_guard/core/query.rb,
lib/query_guard/middleware.rb,
lib/query_guard/subscriber.rb,
lib/query_guard/cli/command.rb,
lib/query_guard/fingerprint.rb,
lib/query_guard/core/context.rb,
lib/query_guard/core/finding.rb,
lib/query_guard/cli/formatter.rb,
lib/query_guard/analyzers/base.rb,
lib/query_guard/cli/json_reporter.rb,
lib/query_guard/uploader/registry.rb,
lib/query_guard/analyzers/registry.rb,
lib/query_guard/cli/commands/check.rb,
lib/query_guard/uploader/interface.rb,
lib/query_guard/analysis/risk_level.rb,
lib/query_guard/cli/commands/analyze.rb,
lib/query_guard/explain/plan_signals.rb,
lib/query_guard/core/finding_builders.rb,
lib/query_guard/uploader/http_uploader.rb,
lib/query_guard/analysis/risk_detectors.rb,
lib/query_guard/suggest/index_suggester.rb,
lib/query_guard/uploader/no_op_uploader.rb,
lib/query_guard/uploader/upload_service.rb,
lib/query_guard/explain/explain_enricher.rb,
lib/query_guard/explain/adapter_interface.rb,
lib/query_guard/cli/batch_report_formatter.rb,
lib/query_guard/cli/paged_report_formatter.rb,
lib/query_guard/explain/postgresql_adapter.rb,
lib/query_guard/suggest/pattern_extractors.rb,
lib/query_guard/migrations/database_adapter.rb,
lib/query_guard/action_controller_subscriber.rb,
lib/query_guard/analyzers/query_risk_analyzer.rb,
lib/query_guard/analyzers/slow_query_analyzer.rb,
lib/query_guard/cli/source_metadata_collector.rb,
lib/query_guard/migrations/migration_analyzer.rb,
lib/query_guard/migrations/postgresql_adapter.rb,
lib/query_guard/analysis/query_risk_classifier.rb,
lib/query_guard/analyzers/query_count_analyzer.rb,
lib/query_guard/analyzers/select_star_analyzer.rb,
lib/query_guard/migrations/table_risk_analyzer.rb,
lib/query_guard/migrations/table_size_resolver.rb,
lib/query_guard/migrations/migration_risk_detectors.rb
Defined Under Namespace
Modules: ActionControllerSubscriber, Analysis, Analyzers, Core, Explain, Fingerprint, Migrations, RSpec, Security, Subscriber, Suggest, Trace, Uploader
Classes: Budget, CLI, Client, Config, Error, Exporter, Middleware, Railtie, Store
Constant Summary
collapse
- VERSION =
"0.5.2"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.client ⇒ Object
Returns the value of attribute client.
54
55
56
|
# File 'lib/query_guard.rb', line 54
def client
@client
end
|
Class Method Details
.buffer ⇒ Object
thread-local queue for the current request
17
|
# File 'lib/query_guard/publish.rb', line 17
def buffer; Thread.current[:qg_buf] ||= [] end
|
.clear! ⇒ Object
18
|
# File 'lib/query_guard/publish.rb', line 18
def clear!; Thread.current[:qg_buf] = [] end
|
.config ⇒ Object
56
57
58
|
# File 'lib/query_guard.rb', line 56
def config
@config ||= Config.new
end
|
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/query_guard.rb', line 60
def configure
yield(config)
@client = Client.new(
base_url: config.base_url,
api_key: config.api_key,
project: config.project,
env: config.env
)
self
end
|
.exporter ⇒ Object
85
86
87
|
# File 'lib/query_guard.rb', line 85
def exporter
@exporter ||= QueryGuard::Exporter.new(config)
end
|
.flush_now! ⇒ Object
25
26
27
28
29
30
|
# File 'lib/query_guard/publish.rb', line 25
def flush_now!
return if buffer.empty?
client.post("/api/v1/events", { events: buffer.dup })
ensure
clear!
end
|
.install!(app = nil) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/query_guard.rb', line 71
def install!(app = nil)
config
Subscriber.install!(config)
ActionControllerSubscriber.install!(config)
if defined?(Rails) && Rails.respond_to?(:application) && Rails.application
Rails.application.config.middleware.use(QueryGuard::Middleware, config)
elsif app
app.use(QueryGuard::Middleware, config)
end
self
end
|
.trace(label, context: {}, &block) ⇒ Object
Trace a block of code and capture query stats.
Returns [result, report] tuple.
91
92
93
|
# File 'lib/query_guard.rb', line 91
def trace(label, context: {}, &block)
Trace.trace(label, context: context, &block)
end
|
.track!(attrs) ⇒ Object
20
21
22
23
|
# File 'lib/query_guard/publish.rb', line 20
def track!(attrs)
return unless enabled?
buffer << default_fields.merge(attrs)
end
|