Rewrite It in Rails

Rails as a Pragmatic Choice

  • Many see Rails as uniquely productive for CRUD / business web apps, letting teams ship features fast and focus on users rather than plumbing.
  • Others argue its “magic” and lack of strong typing make large apps harder to refactor and maintain, especially compared to typed stacks.
  • Some note that pain often comes from team discipline and architecture, not Rails itself; with care, large Rails apps can be fast and maintainable.

Frameworks vs. Languages

  • Strong theme: don’t compare Rails to bare languages (Go, Rust, TypeScript) but to full stacks (Django, Laravel, Spring, ASP.NET, AdonisJS).
  • Batteries‑included frameworks are praised for eliminating decision fatigue and giving common patterns for auth, ORM, jobs, migrations, etc.
  • Lightweight stacks (Flask, FastAPI, Node+Express, minimal Go/Rust frameworks) are seen as fun and flexible but prone to ad‑hoc, messy architectures.

Rust, Go, and “Systems” Languages for Web Apps

  • Several say Rust (and sometimes Go) is a poor fit for typical CRUD apps due to ecosystem immaturity, async complexity, long compile times, and slower iteration.
  • Others report good experiences with Rust backends, emphasizing safety, reliability, and good fit for small services or FaaS/containers.
  • Consensus: Rust shines when you truly need its performance and memory guarantees; otherwise the tradeoff in productivity is questionable.

Static Typing vs. Dynamic Typing

  • Many find it hard to “downgrade” from TypeScript/C#/Kotlin to Ruby, citing the value of static types for refactoring and reducing trivial bugs.
  • Ruby’s typing efforts (Sorbet, RBS, rbs‑inline) are viewed as promising but still clunky compared to Python or TypeScript annotation syntax.
  • Others argue optional/static typing in dynamic languages can be ecosystem‑disruptive and that tests plus discipline are sufficient.

Performance, Scaling, and Energy

  • Some claim Rails is inherently slow and wasteful, even invoking climate concerns; others strongly dispute “100x” energy or server‑cost differences as exaggerated or unmeasured.
  • Counterexamples like large Rails deployments are cited; argument: early productivity and “fast enough” performance usually matter more than theoretical peak RPS.
  • Database design and caching are repeatedly highlighted as more critical bottlenecks than framework choice.

Alternatives and Ecosystems

  • Django and Laravel are frequently mentioned as Rails‑class options; Django especially praised for docs and admin; Laravel for Filament/Livewire.
  • Java/Kotlin stacks (Spring, Ktor, Quarkus), ASP.NET Core, and AdonisJS are noted as high‑productivity, typed alternatives.
  • Some complain modern TypeScript/Node stacks become convoluted, with deep indirection and many small decisions.

Frontend, Admin, and Architecture

  • Rails plus Hotwire or React is liked by some; others feel Rails lags Next.js‑style frontend ergonomics (e.g., images, asset pipeline integration).
  • Built‑in or easy admin interfaces (Rails admin gems, Django admin, Laravel+Filament) are seen as major productivity wins.
  • Mixed‑language architectures (e.g., Rails/Django core plus Rust services or DB sprocs) are described as powerful but more complex to operate.

Rewrites and Familiarity

  • Strong thread: full rewrites often waste time; users rarely benefit from language churn.
  • Many argue the best choice is usually the ecosystem the team already knows well, unless there’s a clear, concrete reason to switch.