Skip to content

Latest commit

 

History

History
63 lines (49 loc) · 2.43 KB

File metadata and controls

63 lines (49 loc) · 2.43 KB

Roundhouse — user guide

Roundhouse reads a Rails application — unmodified source, no annotations, no bundle install, no boot, no database — and does one of three things with what it learns. Pick the door you came for.

Analyze

Whole-program type and effect inference over your app, surfaced as an editor server, an agent tool, and a command-line checker. What's the type here? Can it be nil? Which filters run before this action, and which query will be N+1?

  • check.md — roundhouse check: the diagnostics and how to read them.
  • editor.md — the LSP in VS Code (or any LSP client).
  • mcp.md — the MCP server for Claude Code, Cursor, and other agents.
  • ide.md — the in-browser IDE, which analyzes a folder on your disk without uploading it.

Transpile

The same analysis, fed to one of a dozen emitters: a standalone project in Rust, Go, TypeScript, Crystal, Elixir, Kotlin, Swift, Python, C#, or Ruby, with its own tests and no Rails at runtime.

  • transpile.md — roundhouse --target: producing a project and running it.
  • targets.md — every target, its toolchain, and how far it is tested.
  • rails-coverage.md — which parts of Rails come through, and where each target stops.
  • verifying.md — the DOM-equivalence oracle: proving the emitted app renders what Rails renders.

Compile

The Ruby-shape emit compiled ahead of time to a native binary by Spinel. One executable, no interpreter, a SQLite file beside it by default.

  • spinel.md — building, running, tuning and deploying the binary.
  • One command: OCRAN — ocran --roundhouse path/to/app runs those steps for you and hands back a directory to ship.

Before any of them

  • install.md — the snapshot binaries, and building from source when they don't fit.
  • ../../RELEASES.md — what each dated snapshot contains.

Elsewhere

This guide is for using roundhouse. The architecture — how the pipeline is built, what each pass does, why the runtime is split the way it is — lives one directory up in docs/, and contributor setup in DEVELOPMENT.md. Status claims in this guide describe the snapshot they ship with; where the guide and CI disagree, CI wins.