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.