Class: RailsAiBridge::Introspectors::SchemaIntrospector

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_bridge/introspectors/schema_introspector.rb

Overview

Extracts database schema information — tables, columns, indexes, and foreign keys — from a live ActiveRecord connection when available, or by falling back to text-parsing +db/schema.rb+ via RailsAiBridge::Introspectors::Schema::StaticSchemaParser when no connection is present (CI, Claude Code, offline environments).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ SchemaIntrospector

Returns a new instance of SchemaIntrospector.

Parameters:

  • app (Rails::Application)


20
21
22
23
# File 'lib/rails_ai_bridge/introspectors/schema_introspector.rb', line 20

def initialize(app)
  @app    = app
  @config = RailsAiBridge.configuration
end

Instance Attribute Details

#appRails::Application (readonly)

Returns:

  • (Rails::Application)


14
15
16
# File 'lib/rails_ai_bridge/introspectors/schema_introspector.rb', line 14

def app
  @app
end

#configRailsAiBridge::Configuration (readonly)



17
18
19
# File 'lib/rails_ai_bridge/introspectors/schema_introspector.rb', line 17

def config
  @config
end

Instance Method Details

#callHash{Symbol => Object}

Returns database schema context. Uses a live connection when available; falls back to static text-parsing otherwise.

Returns:

  • (Hash{Symbol => Object})

    includes +:adapter+, +:tables+, +:total_tables+, and +:schema_version+ (live) or +:note+ (static)



30
31
32
33
34
35
36
37
38
39
# File 'lib/rails_ai_bridge/introspectors/schema_introspector.rb', line 30

def call
  return static_schema_parse unless active_record_connected?

  {
    adapter: adapter_name,
    tables: extract_tables,
    total_tables: table_names.size,
    schema_version: current_schema_version
  }
end