Class: RailsAiBridge::Services::ContextGenerationService
- Inherits:
-
RailsAiBridge::Service
- Object
- RailsAiBridge::Service
- RailsAiBridge::Services::ContextGenerationService
- Defined in:
- lib/rails_ai_bridge/services/context_generation_service.rb
Overview
Application service for generating context files from introspection data.
Delegates to a serializer (default RailsAiBridge::Serializers::ContextFileSerializer) and
normalizes successful results to a stable data shape: { written: Array, skipped: Array },
even when the serializer returns a partial hash, a non-hash, or nil. Failures are returned
as a failed RailsAiBridge::Service::Result rather than raised.
Class Method Summary collapse
-
.call(context_data, format: :all, serializer_class: Serializers::ContextFileSerializer) ⇒ RailsAiBridge::Service::Result
Class-level entry point with explicit serializer and format.
Instance Method Summary collapse
-
#call ⇒ RailsAiBridge::Service::Result
Runs the serializer and wraps the outcome in a RailsAiBridge::Service::Result.
-
#initialize(context_data, serializer_class: Serializers::ContextFileSerializer, format: :all, fingerprint: nil) ⇒ ContextGenerationService
constructor
A new instance of ContextGenerationService.
Constructor Details
#initialize(context_data, serializer_class: Serializers::ContextFileSerializer, format: :all, fingerprint: nil) ⇒ ContextGenerationService
Returns a new instance of ContextGenerationService.
41 42 43 44 45 46 47 |
# File 'lib/rails_ai_bridge/services/context_generation_service.rb', line 41 def initialize(context_data, serializer_class: Serializers::ContextFileSerializer, format: :all, fingerprint: nil) super() @context_data = context_data @serializer_class = serializer_class @format = format @fingerprint = fingerprint end |
Class Method Details
.call(context_data, format: :all, serializer_class: Serializers::ContextFileSerializer) ⇒ RailsAiBridge::Service::Result
Class-level entry point with explicit serializer and format. The source fingerprint is always computed at call time via Fingerprinter.source_fingerprint; to inject a fingerprint (or serializer class) directly, use #initialize.
32 33 34 |
# File 'lib/rails_ai_bridge/services/context_generation_service.rb', line 32 def self.call(context_data, format: :all, serializer_class: Serializers::ContextFileSerializer) new(context_data, serializer_class: serializer_class, format: format).call end |
Instance Method Details
#call ⇒ RailsAiBridge::Service::Result
Runs the serializer and wraps the outcome in a RailsAiBridge::Service::Result.
Successful data always uses symbol keys :written and :skipped with array values, derived
only from symbol keys on a Hash return value from the serializer.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rails_ai_bridge/services/context_generation_service.rb', line 55 def call fingerprint = @fingerprint || Fingerprinter.source_fingerprint(AppScope.current_app) serializer = @serializer_class.new(@context_data, format: @format, fingerprint: fingerprint) serialization_result = serializer.call normalized = { written: Array(serialization_result.is_a?(Hash) ? serialization_result[:written] : nil), skipped: Array(serialization_result.is_a?(Hash) ? serialization_result[:skipped] : nil) } Service::Result.new(true, data: normalized) rescue StandardError => error Service::Result.new(false, errors: [error.]) end |