Class: RailsAiContext::Introspectors::EngineIntrospector

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_context/introspectors/engine_introspector.rb

Overview

Discovers mounted Rails engines and Rack apps from config/routes.rb. Identifies well-known engines and provides context about what each does.

Constant Summary collapse

KNOWN_ENGINES =
{
  "Sidekiq::Web" => { category: :admin, description: "Sidekiq background job dashboard" },
  "GoodJob::Engine" => { category: :admin, description: "GoodJob dashboard for background jobs" },
  "MissionControl::Jobs::Engine" => { category: :admin, description: "Rails Mission Control for SolidQueue jobs" },
  "ActiveAdmin::Engine" => { category: :admin, description: "ActiveAdmin administration framework" },
  "RailsAdmin::Engine" => { category: :admin, description: "Rails Admin dashboard" },
  "Administrate::Engine" => { category: :admin, description: "Thoughtbot Administrate dashboard" },
  "Avo::Engine" => { category: :admin, description: "Avo admin panel" },
  "Madmin::Engine" => { category: :admin, description: "Madmin admin interface" },
  "Flipper::UI" => { category: :feature_flags, description: "Flipper feature flag dashboard" },
  "Flipper::Api" => { category: :feature_flags, description: "Flipper feature flag API" },
  "PgHero::Engine" => { category: :monitoring, description: "PgHero PostgreSQL performance dashboard" },
  "Blazer::Engine" => { category: :monitoring, description: "Blazer SQL query dashboard" },
  "Coverband::Engine" => { category: :monitoring, description: "Coverband code coverage in production" },
  "Rswag::Api::Engine" => { category: :api_docs, description: "Rswag API documentation (Swagger)" },
  "Rswag::Ui::Engine" => { category: :api_docs, description: "Rswag Swagger UI" },
  "GraphiQL::Rails::Engine" => { category: :api_docs, description: "GraphiQL in-browser IDE for GraphQL" },
  "Lookbook::Engine" => { category: :ui, description: "Lookbook ViewComponent previews" },
  "LetterOpenerWeb::Engine" => { category: :dev_tools, description: "Letter Opener Web email preview" },
  "ActionCable.server" => { category: :realtime, description: "Action Cable WebSocket server" },
  "Devise::Engine" => { category: :auth, description: "Devise authentication engine" },
  "Doorkeeper::Engine" => { category: :auth, description: "Doorkeeper OAuth 2 provider" },
  "ActionMailbox::Engine" => { category: :mail, description: "Action Mailbox inbound email processing" },
  "ActiveStorage::Engine" => { category: :storage, description: "Active Storage file uploads" }
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ EngineIntrospector

Returns a new instance of EngineIntrospector.



36
37
38
# File 'lib/rails_ai_context/introspectors/engine_introspector.rb', line 36

def initialize(app)
  @app = app
end

Instance Attribute Details

#appObject (readonly)

rubocop:disable Metrics/ClassLength



8
9
10
# File 'lib/rails_ai_context/introspectors/engine_introspector.rb', line 8

def app
  @app
end

Instance Method Details

#callHash

Returns mounted engines with paths and descriptions.

Returns:

  • (Hash)

    mounted engines with paths and descriptions



41
42
43
44
45
46
47
48
# File 'lib/rails_ai_context/introspectors/engine_introspector.rb', line 41

def call
  {
    mounted_engines: discover_mounted_engines,
    rails_engines: discover_rails_engines
  }
rescue => e
  { error: e.message }
end