Class: Woods::Extractors::EngineExtractor

Inherits:
Object
  • Object
show all
Includes:
SharedUtilityMethods
Defined in:
lib/woods/extractors/engine_extractor.rb

Overview

EngineExtractor handles Rails engine and mountable gem extraction via runtime introspection.

Reads Rails::Engine.subclasses to discover engines, then inspects each engine's routes, mount point, and configuration. Each engine becomes one ExtractedUnit with metadata about its name, root path, mount point, route count, and isolation.

Examples:

extractor = EngineExtractor.new
units = extractor.extract_all
devise = units.find { |u| u.identifier == "Devise::Engine" }

Instance Method Summary collapse

Methods included from SharedUtilityMethods

#app_source?, #condition_label, #count_loc, #detect_entry_points, #extract_action_filter_actions, #extract_callback_conditions, #extract_class_methods, #extract_class_name, #extract_custom_errors, #extract_initialize_params, #extract_namespace, #extract_parent_class, #extract_public_methods, #find_files_in_directories, #resolve_source_location, #skip_file?

Constructor Details

#initializeEngineExtractor

Returns a new instance of EngineExtractor.



21
22
23
# File 'lib/woods/extractors/engine_extractor.rb', line 21

def initialize
  # No directories to scan — this is runtime introspection
end

Instance Method Details

#extract_allArray<ExtractedUnit>

Extract all Rails engines as ExtractedUnits

Returns:



28
29
30
31
32
33
34
35
36
# File 'lib/woods/extractors/engine_extractor.rb', line 28

def extract_all
  return [] unless engines_available?

  engines = engine_subclasses
  return [] if engines.empty?

  mount_map = build_mount_map
  engines.filter_map { |engine| extract_engine(engine, mount_map) }
end