Class: RailsAiBridge::Introspectors::EngineIntrospector

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_bridge/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.



37
38
39
# File 'lib/rails_ai_bridge/introspectors/engine_introspector.rb', line 37

def initialize(app)
  @app = app
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



8
9
10
# File 'lib/rails_ai_bridge/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



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

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