Class: CodeToQuery::Guardrails::ExplainGate
- Inherits:
-
Object
- Object
- CodeToQuery::Guardrails::ExplainGate
- Defined in:
- lib/code_to_query/guardrails/explain_gate.rb
Constant Summary collapse
- DEFAULT_MAX_COST =
10_000- DEFAULT_MAX_ROWS =
100_000
Instance Method Summary collapse
- #allowed?(sql) ⇒ Boolean
-
#initialize(config) ⇒ ExplainGate
constructor
A new instance of ExplainGate.
Constructor Details
#initialize(config) ⇒ ExplainGate
Returns a new instance of ExplainGate.
14 15 16 |
# File 'lib/code_to_query/guardrails/explain_gate.rb', line 14 def initialize(config) @config = config end |
Instance Method Details
#allowed?(sql) ⇒ Boolean
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/code_to_query/guardrails/explain_gate.rb', line 18 def allowed?(sql) return true unless defined?(ActiveRecord::Base) && ActiveRecord::Base.connected? plan = get_explain_plan(sql) return true if plan.nil? || plan.empty? analyze_plan_safety(plan) rescue StandardError => e # Log error; fail-open or fail-closed based on configuration CodeToQuery.config.logger.warn("[code_to_query] ExplainGate error: #{e.message}") !!@config.explain_fail_open end |