Ruby on Rails Audit Complete
Audit scope, timing, and funding
- Commenters share the PDF report and note the audit is explicitly partial: the full Rails codebase is too large to cover, so tests focus on common vulnerability classes and future-focus areas.
- Some vulnerabilities appear not yet fixed in Rails 8.0.2; people wonder if they’ll land in 8.1.
- The audit was funded by a non‑profit; others asking for Django/Spring/Phoenix audits are told audits cost real money and depend on raising comparable funds.
- The audit team joins the thread, saying they’d like to do more framework audits but are constrained by grant funding.
Security findings and framework defaults
- Several see the low number of findings as a positive sign for a mature, widely-used framework.
- Others emphasize this isn’t a full guarantee of safety, just added confidence that common issues are being looked at.
- Discussion around SameSite cookie settings: “Strict” is more secure but breaks common flows (e.g., opening links from other sites not logged in), so trade-offs matter.
- A finding about Rails generating
paramsfor GET/HEAD/DELETE is viewed as potentially dangerous in badly structured apps. - The recommendation to avoid raw
SqlLiteralis debated: some argue Rails already has a good SQL model (Arel) but it’s under-documented; others stress that forcing explicit “unsafe” APIs and good defaults is crucial.
Rails productivity, scaling, and alternatives
- Many reiterate that Rails remains extremely productive for CRUD/B2B apps, with batteries-included defaults (auth, mailers, file uploads, pagination, search, etc.).
- The “Rails doesn’t scale” trope is strongly disputed; people cite large deployments and argue architecture mattered more than framework at places like Twitter.
- Others prefer Elixir/Phoenix or Go for performance, type safety, concurrency, or operational reasons, but acknowledge Rails’s ecosystem, funding, and hiring pool as major advantages.
- Some say equivalent productivity now exists in other ecosystems, while others maintain Rails is still uniquely cohesive.
Typing, tooling, and language experience
- Static typing (or lack of it) is a recurring theme: some teams consider no static types a deal-breaker; others argue tests plus convention are enough.
- Ruby’s RBS/Steep/Sorbet efforts are criticized as awkward compared to Python/TypeScript’s gradual typing; some think Ruby should avoid types entirely.
- Proponents push back that everything in Ruby is typed at runtime and that tools and debuggers are sufficient when used correctly.
Elixir/Phoenix vs Rails
- Several with experience in both stacks find Elixir more performant, safer (compile-time checks), and well-suited to realtime/distributed workloads via the BEAM.
- Counterpoints:
- Library and integration ecosystems are smaller; you often hit missing or abandoned libraries.
- Hiring and training can be harder; teams used to OO or JS/Ruby sometimes struggle with functional patterns.
- Phoenix lacks a Rails-level all-in-one story for some features (though LiveView, Ecto, and projects like Ash reduce that gap).
- There’s debate about whether real-time, persistent connections justify Elixir’s trade-offs for most web apps.
Rails popularity and ecosystem shifts
- Multiple factors are cited for Rails’s relative decline from its peak:
- Node.js enabling JS end-to-end and bootcamps focusing on “one language.”
- Python’s rise in data science/ML and academia.
- Mobile + APIs splitting frontend/backends and pushing SPAs, microservices, and Go/Java ecosystems.
- The allure of “new and simple” stacks vs a maturing, more complex Rails.
- Modern concurrency stories (async/await) in other languages.
- Some argue monoliths and Rails are being rediscovered as microservice complexity proves costly, even if search trends show a long-term decline.
AI tooling and language choice
- One view: with generative AI, niche stacks are a liability because AI models are weaker on them; Rails is “good enough” and well-supported.
- Others report mixed results: some find OpenAI models strong on Rails, while Anthropic models struggle; some prefer Go from an AI-assistance standpoint.
“Magic”, debugging, and large Rails codebases
- Experiences diverge sharply:
- Critics find large Rails apps (e.g., Gitlab) “magical” and hard to reason about: heavy metaprogramming, dynamic dispatch, and no static types make “find all references” difficult.
- Defenders say this improves dramatically if you lean on Ruby’s debuggers and introspection (e.g., method source location, REPL loading) instead of static-language habits.
- There’s disagreement over whether requiring runtime introspection just to trace calls is acceptable developer experience.
Frameworks, security, and JS “equivalents”
- Several note that using established frameworks like Rails/Django/Laravel/Spring already mitigates many common security issues compared to ad hoc stacks.
- In JS, candidates like SvelteKit, RedwoodJS, and Wasp are proposed as “Rails-like,” but critics argue they rarely provide equally opinionated, integrated DB/ORM and full-stack conventions.
- Overall, commenters view the audit as a useful, if partial, reinforcement that Rails remains a viable and secure choice for many web applications.