Class: Olyx::Guardrails::Rails::Configuration
- Inherits:
-
Object
- Object
- Olyx::Guardrails::Rails::Configuration
- Defined in:
- lib/olyx/guardrails/rails/configuration.rb
Overview
Holds validated Rails adapter configuration.
Most values validate during construction. Loading an
environment-specific policy_path is deferred until #finalize!, which
runs once during boot and freezes the configuration.
Applications read this object through Olyx::Guardrails::Rails.configuration and configure it through Olyx::Guardrails::Rails.configure.
Constant Summary collapse
- DEFAULT_FILTER_PARAMETERS =
Default parameter names added to Rails.application.config.filter_parameters.
%i[prompt system_prompt llm_input].freeze
Instance Attribute Summary collapse
-
#enabled ⇒ Object
readonly
Whether Rails guardrail entry points are enabled.
-
#filter_parameters ⇒ Object
readonly
The frozen parameter names added to Rails parameter filtering.
-
#llm_provider ⇒ Object
readonly
The optional callable used for semantic analysis.
-
#notifier ⇒ Object
readonly
The finalized Notifier, or
nilwhen no handlers are configured. -
#notifier_handlers ⇒ Object
readonly
The frozen, named notification handler Hash.
-
#policy ⇒ Object
readonly
The active Policy.
-
#policy_path ⇒ Object
readonly
The configured policy file path, or
nil.
Instance Method Summary collapse
-
#ensure_enabled! ⇒ Object
Returns
nilwhen enabled. -
#finalize!(environment:) ⇒ Object
:call-seq: configuration.finalize!(environment:) -> Configuration.
-
#finalized? ⇒ Boolean
Returns whether this configuration has been finalized and frozen.
-
#initialize(policy: nil, policy_path: nil, filter_parameters: DEFAULT_FILTER_PARAMETERS, notifier_handlers: {}, enabled: true, llm_provider: nil) ⇒ Configuration
constructor
:call-seq: Configuration.new(policy: nil, policy_path: nil, filter_parameters: DEFAULT_FILTER_PARAMETERS, notifier_handlers: {}, enabled: true, llm_provider: nil) -> Configuration.
Constructor Details
#initialize(policy: nil, policy_path: nil, filter_parameters: DEFAULT_FILTER_PARAMETERS, notifier_handlers: {}, enabled: true, llm_provider: nil) ⇒ Configuration
:call-seq:
Configuration.new(policy: nil, policy_path: nil,
filter_parameters: DEFAULT_FILTER_PARAMETERS,
notifier_handlers: {}, enabled: true,
llm_provider: nil) -> Configuration
Builds pending Rails configuration. policy must be a Policy;
policy_path must identify a safe YAML policy file. Supplying both
raises ConfigurationError.
filter_parameters is an Array of String or Symbol names.
notifier_handlers is a Hash of named callables. enabled requires a
literal Boolean, and llm_provider must be callable or nil.
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 61 def initialize( policy: nil, policy_path: nil, filter_parameters: DEFAULT_FILTER_PARAMETERS, notifier_handlers: {}, enabled: true, llm_provider: nil ) assign_policy_source(policy, policy_path, filter_parameters) assign_integration_settings(enabled, notifier_handlers, llm_provider) @finalized = false end |
Instance Attribute Details
#enabled ⇒ Object (readonly)
Whether Rails guardrail entry points are enabled.
30 31 32 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 30 def enabled @enabled end |
#filter_parameters ⇒ Object (readonly)
The frozen parameter names added to Rails parameter filtering.
33 34 35 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 33 def filter_parameters @filter_parameters end |
#llm_provider ⇒ Object (readonly)
The optional callable used for semantic analysis.
27 28 29 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 27 def llm_provider @llm_provider end |
#notifier ⇒ Object (readonly)
The finalized Notifier, or nil when no handlers are configured.
36 37 38 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 36 def notifier @notifier end |
#notifier_handlers ⇒ Object (readonly)
The frozen, named notification handler Hash.
39 40 41 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 39 def notifier_handlers @notifier_handlers end |
#policy ⇒ Object (readonly)
The active Policy. Before finalization this may be nil when
policy_path is configured.
43 44 45 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 43 def policy @policy end |
#policy_path ⇒ Object (readonly)
The configured policy file path, or nil.
46 47 48 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 46 def policy_path @policy_path end |
Instance Method Details
#ensure_enabled! ⇒ Object
Returns nil when enabled. Raises ConfigurationError when disabled.
98 99 100 101 102 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 98 def ensure_enabled! return if @enabled raise ConfigurationError, 'Olyx Guardrails Rails integration is disabled' end |
#finalize!(environment:) ⇒ Object
:call-seq:
configuration.finalize!(environment:) -> Configuration
Resolves the policy for environment, builds the notifier, freezes
this instance, and returns it. Repeated calls return the same instance.
79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 79 def finalize!(environment:) return self if finalized? @policy, @notifier = ConfigurationFinalizer.call( policy: @policy, path: @policy_path, handlers: @notifier_handlers, environment: environment ) @finalized = true freeze end |
#finalized? ⇒ Boolean
Returns whether this configuration has been finalized and frozen.
93 94 95 |
# File 'lib/olyx/guardrails/rails/configuration.rb', line 93 def finalized? @finalized end |