Skip to content

Extraction: configurable load paths and multi-gemspec monorepo discovery #45

Description

@TristanKruse

Context

The real-world audit against Rails exposed a resolution gap. When the repository root contains multiple gems, imports between sibling gems are currently classified as external. For example,
equire 'active_support' from Action Pack is not resolved to �ctivesupport/lib/active_support.rb because extraction currently searches only the repository root and its top-level lib directory.

Goal

Support Ruby monorepos and non-standard project layouts without executing application code or gemspecs.

Starting approach

  • Discover *.gemspec files under the project root.
  • Add each existing sibling lib directory to the internal feature search roots.
  • Allow users to supply additional explicit load paths for layouts such as components//lib or plugins//lib.
  • Normalize and deduplicate paths deterministically.
  • Include analysis-affecting load-path options in the graph-cache key.

The public API shape should remain idiomatic and follow the existing options-bag/fluent conventions.

Acceptance criteria

  • A multi-gem fixture resolves a cross-gem
    equire as an internal edge.
  • Explicit custom load paths resolve internal imports.
  • A normal single-gem project behaves exactly as before.
  • Gemspec files are discovered but never evaluated.
  • Windows and POSIX path behavior are covered.
  • Cache reuse and invalidation remain correct.
  • README/API documentation explains automatic discovery, explicit paths, and limitations.

Observed during the 0.0.1 real-world audit of Rails (3,445 Ruby files).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions