Why Ruby on Rails still matters

philip1209 | 473 points

For the hundreds of people reading this article right now - you might be amused to know that you're accessing it from a mac mini on my desk:

https://www.contraption.co/a-mini-data-center/

(The CPU load from this is pretty negligible).

philip1209 | a day ago

I really like web apps that are just CRUD forms. It obviously doesn't work for everything, but the "list of X -> form -> updated list of X" user experience works really well for a lot of problem domains, especially ones that interact with the real world. It lets you name your concepts, and gives everything a really sensible place to change it. "Do I have an appointment, let me check the list of appointments".

Contrast that, to more "app-y" patterns, that might have some unifying calendar, or mix things into a dashboard. Those patterns are also useful!! And of course, all buildable in rails as well. But there is something nice about the simplicity of CRUD apps when I end up coming across one.

So even though you can build in any style with whatever technology you want:

Rails feels like it _prefers_ you build "1 model = 1 concept = 1 REST entity"

Next.js (+ many other FE libraries in this react-meta-library group) feels like it _prefers_ you build "1 task/view = mixed concepts to accomplish a task = 1 specific screen"

graypegg | a day ago

Why is the ruby/rails community so weird. Half of us just quietly make stuff, but the other half seems to need to sporadically reassure everyone that it's not dead, actually.

> Rails has started to show its age amid with the current wave of AI-powered applications.

Not everything needs to have bloody AI.

Sincere6066 | 20 hours ago

> Rails has started to show its age amid with the current wave of AI-powered applications. It struggles with LLM text streaming, parallel processing in Ruby

Not at all my experience, actually it was incredibly easy to get this working smoothly with hotwire and no javascript at all (outside the hotwire lib).

We have a Rails app with thousands of users streaming agentic chat interfaces, we've had no issues at all with this aspect of things.

mbell | a day ago

It's very interesting to note that you can build and maintain meta web framework like RoR with Ruby, Django and even D language.

Go and Rust are amazing languages, but why can’t they produce a Rails-like framework?

Is it just a matter of time before Go/Rust create a Rails-like framework, or is something fundamental preventing it?

Perhaps this article by Patrick Li (author of Stanza language) has the answers [1].

[1] Stop Designing Languages. Write Libraries Instead:

https://lbstanza.org/purpose_of_programming_languages.html

teleforce | 13 hours ago

> Rails has started to show its age amid with the current wave of AI-powered applications. It struggles with LLM text streaming, parallel processing in Ruby, and lacks strong typing for AI coding tools. Despite these constraints, it remains effective.

A plug for Django + gevent in this context! You have the Python type system, and while it's inferior to TypeScript's in many ways, it's far more ubiquitous than Ruby's Sorbet. For streaming and any kind of IO-bound parallelism, gevent's monkey-patches cause every blocking operation to become a event-loop yield... so you can stream many concurrent responses at a time, with a simple generator. CPU-bound parallelism doesn't have a great story here, but that's less relevant for web applications - and if you're simultaneously iterating on ML models and a web backend, they'd likely run on separate machines anyways, and you can write both in Python without context-switching as a developer.

btown | a day ago

RoR is a beast, it has its place. The issue we have today is that everything is to fast paced, so fast that people feel the need to follow the latest and greatest, or they will be left behind.

This has (in my opinion) lead to a false sense that if something is not hyped as often, then its not used either.

Alifatisk | a day ago

> lacks strong typing for AI coding tools

I've heard this criticism a few times – the fear that LLMs will be bad at Rails because there's no types – and I don't think it's accurate.

At least in my experience (using the Windsurf IDE with Claude 3.5 Sonnet) LLMs do a very good job in a Rails codebase for stuff like "I want to create a new page for listing Widgets, and a Create page for those Widgets. And then add pagination.". I've been able to spin up whole new entities with a model/view/controller and database migration and tests, styled with tailwind.

I think the reason strong types don't matter as much as we might assume is because Rails has very strong conventions. Routing lives in routes.rb, controllers go under app/controllers, most controllers or models will look very similar to other ones, etc.

Type information is something that has to be presented to the LLM at runtime for it to be accurate, but convention-over-configuration is stuff that it will have picked up in training data across thousands of Rails apps that look very similar.

On top of that, the core Rails stuff hasn't drastically changed over time, so there's lots of still-accurate StackOverflow questions to train on. (as opposed to something like Next.js which had a huge upheaval over app router vs pages router, and the confusion that would cause in training data).

In my opinion the future of LLM-aided Rails development seems pretty bright.

dceddia | a day ago

RoR is great. Ruby just needs to grow beyond it.

I worked at a company that, when faced with the choice between rewriting its Django apps in Python 3, and rewriting them in RoR, decided to go with the latter.

Now, I didn't like that since I was on an undermanned team that had literally just started a major update of a Django site, and it arguably wasn't the right way to go business-wise, but a lot of ideas that have come into Django over the years were ideas that existed in RoR.

I'd like to see that sort of innovation happen in some of the other spaces that Python is in, if for no other reason than to prevent monoculture in those areas. There needs to be offerings for Ruby in other areas, like scientific computing, machine learning/AI, and data analysis that get the same uptake that Rails does.

lenerdenator | a day ago

It’s interesting to see how convention over configuration had its hay-day in the 2010s. Angular, EmberJS, Django, and Rails were very, very popular. Now, the new type of modern stack, e.g. React/NextJS with bespoke backends consisting of things like NodeJS spaghetti with express seem to have a lot of traction.

I base the above assertion mainly on looking at Who’s Hiring posts btw.

sidenote - is NextJS really the best “convention over configuration” approach for react? I’d love to just use ember, but most of the community has moved to react, but I really enjoy the opinionated approach

amazingamazing | a day ago

I am using Django and I do understand the sentiment.

But everything old is new again.

Today there is better tooling than ever for these tools. I am using Django with htmx + alpine.js and sending HTML instead of JSON. Breaking free from JSON REST APIs is a huge productivity boost.

gatinsama | a day ago

Any thoughts on Inertia.js, which seems like a good solution for React + Rails? Feels like you can have your cake and eat it too.

https://github.com/inertiajs/inertia-rails

Axsuul | a day ago

it’s been quite a few years since I’ve worked in Rails, but I miss it sometimes. None of the other platforms ever completely replicated the functionality of a standard Rails environment circa 2009, so we reinvent the wheel every time. Basic stuff, too: ORM hooks, validations. It’s always a relief when I get to work with someone who has also worked on Rails before, because it means we have a shared vocabulary - there’s no equivalent thing among Python programmers, or JVM programmers, or anywhere else that I’m aware of

jes5199 | 19 hours ago

Along this vein: I learned programming ~15 years ago. On my own, as a hobby. Now it's a hobby and day job. Lots of tech churn in this time period. I've branched out into many domains.

The constant that's been with me from start to end: Django. Because it's fantastic and versatile. I still am kind of bitter the tutorial I followed wasted so much time on tangents regarding VirtualBox, Vagrant, Chef... I program most things in rust, but not web, because there is nothing there that compares.

the__alchemist | 9 hours ago

In an era of microservices-and-k8s-all-the-things, Rails monoliths are a breath of fresh air. For stuff that's really performance- or latency-sensitive, tacking on a satellite service in Go or Rust works great.

cjk | a day ago

This is an unfortunate comparison. I actually chose Next.js because of its similarity to Rails - it's a batteries included, opinionated framework that favors convention over configuration (though it's not sold that way since these are not the currently trending buzzwords). There's absolutely nothing preventing you from using both tools. Rails works great as an API supporting a Next.js UI.

luketheobscure | a day ago

> Rails has started to show its age amid with the current wave of AI-powered applications.

A feature, not a bug. Rails will continue to be good for building things long after the AI boom has died down.

mostlysimilar | a day ago

"It struggles with LLM text streaming, parallel processing in Ruby[3], and lacks strong typing for AI coding tools."

What's the struggle specifically? How these general articles of opinion get to the first page of HN I'll never understand. Just random statements without anything to back them up.

pgcosta | 7 hours ago

"Developers choose Rails today because, 20 years later, it remains the most simple and abstracted way to build a web application."

Well, then there are those of us who use Django for similar reasons :)

raintrees | 6 hours ago

I've started to use PHP again because AI deals with it nearly perfectly such that I can focus entirely on the product without trivia deep dives.

mathgladiator | 5 hours ago

To go in the other direction, static site generators (SSGs) also have a place on the menu. Build locally. Host them on your favorite CDN. I personally really like Zola (Rust), inspired by Hugo (Go).

xpe | a day ago

> Many of today's most polished products, like Linear and ChatGPT launched as Next.js applications, and treated mobile apps as secondary priorities.

Linear was started on next.js? I thought they built a custom sync engine? https://linear.app/blog/scaling-the-linear-sync-engine

I feel like this article is hyping up the importance of next.js.

krashidov | a day ago

> It became the foundation for numerous successful companies - Airbnb, Shopify, Github, Instacart, Gusto, Square, and others. Probably a trillion dollars worth of businesses run on Ruby on Rails today.

Do those companies still run their businesses on RoR? My impression was that companies started out with it, but migrated to something more robust as their traffic grew.

UncleOxidant | a day ago

Rails makes me really appreciate the dictatorial nature of it (dhh). Compared to the free for all landscape in javascript, Rails moves a lot slower, but decisively.

I started using rails in 2014, and I think this is some of the most exciting days in rails. Hotwire, Turbo, Stimulus + no build JS pushed the framework into what feels like next generation web development.

While all the same patterns exist in javascript, it seems like there are 5, 6, 7, 8 ways to do everything. Something as trivial as authentication has multiple implementations online, with multiple libraries, which is hugely frustrating.

czhu12 | 20 hours ago

Of course it still matters.

What else would both teach programmers that nice languages exist, and that OOP leads to a nondeterministic spaghetticode hellscape? ;)

(I once spent an entire month debugging a transient login issue (session loss bug) on a million-line RoR app. Most of the bug ended up being something which merged a HashWithIndifferentAccess with a regular Hash, and key overwrite was nondeterministic. This type of bug is doubly impossible in something like Elixir- both since it is data-focused and not inheritance-focused, and because it is immutable.)

pmarreck | 19 hours ago

"Next.js enabled websites to approach iPhone app quality."

This is a fascinating perspective, because building PWAs with raw js and very early react I always felt these were as good as iPhone app quality.

matt-p | 13 hours ago

It's still my favourite web framework. I just wish the Ruby language had better support for type annotations (like Python does). Then it'd be sorta perfect for me

m11a | 12 hours ago

I think Rails's big contribution is the idea of convention over configuration. Maybe this my own myopia, but Django feels like Rails, and NextJS also borrows from Rails. I've only managed one Rails project in production, and I had to come up to speed really fast to support it, but I loved it.

cjohnson318 | 18 hours ago

Starting today in what scenario would RoR would be a better option than Next.js for building web app? Assuming one has to start from 0 -> 1 .

ram_rar | a day ago

One of the biggest issues is that newer tools often lack Rails integrations. I recently built one for CKEditor - happy to share details if anyone's interested.

https://github.com/Mati365/ckeditor5-rails?tab=readme-ov-fil...

mati365 | a day ago

I wouldn't say Rails is the most simple and abstracted way to build a web application. More so than Next.js, yes, but there are both older and newer technologies that keep things simpler.

yayitswei | 19 hours ago

TBH I've started to like the GraphQL ruby layer in Rails projects as it creates a pretty clean boundary that works well with boilerplate and is more standardized than REST APIs.

And I find that the "convention based" approach lends itself well to having AI write stuff for you.

Glyptodon | a day ago

I feel the same, but for Django, even though I don’t write Python as much these days.

rednafi | a day ago

Ruby on Rails has an amazing DX (e.g. engines). We are trying to recreate that for JS with Wasp (https://github.com/wasp-lang/wasp)

matijash | a day ago

Is Next.js really that popular? What else are people building back-end applications with? Are they just NOT building back-end applications and moving to services like Next.js with function-based hybrid backends?

aosaigh | a day ago

I so wish we had Rails for JavaScript. Many have tried but no equivalent exists.

kilroy123 | 15 hours ago

You know a language is dying when you start seeing articles like this.

y0ssar1an | 6 hours ago

> Next.js now serves as the most common tool for building a startup.

This is completely unfounded.

tantalor | a day ago

>It became the foundation for numerous successful companies

And after the MVP phase passed and the company became successful, they usually rewrote the software in something else.

DeathArrow | 15 hours ago
[deleted]
| 9 hours ago

After all these years, rails is still my favorite framework to build with. Although I have become increasingly bored/frustrated with the front-end development in rails, which lacks a solid rails-way.

usernamed7 | a day ago

I haven't actually used RoR, but I've used Django extensively and understand they are fairly similar. How do people build things that aren't just CRUD? Django calls itself a "web framework" but I think that's wrong, it's a CRUD app framework. Is RoR the same?

The main problem I have is the mixing up of low-level logic like web and database etc with high-level logic (ie. business rules). The easy path leads to a ball of mud with duplicated business rules across views and forms etc. How are people dealing with this? Does RoR fit into a larger application architecture where it does just the CRUD part and some other systems take over to do the business part?

It always seems to start well, you have your models, and views just doing CRUD stuff. But then someone says "I don't want to have to create an author before I create a book, let me enter new author details when I enter a book", and then the whole thing breaks. You need some logic somewhere to create authors but only in certain cases and of course the whole thing needs to be one transaction etc. Then you end up basically undoing all the simple views you did and essentially fighting the system to handle logic it was never designed to handle.

In essence, these systems make the easy stuff easy and the hard stuff even harder.

globular-toast | 14 hours ago

It does not when ASP.NET Core exists. UX just as good or even better, 10x performance.

neonsunset | 15 hours ago

I love Ruby. However, based on my readings, Rust, rocket, seems like a compelling choice due to its true parallel processing capabilities, strong typing, and impressive speed. Perhaps the author has yet to explore other technologies outside of Rails.

stevev | 8 hours ago

Just because of job availability, I've been a JS (Node, React, Next, etc.) dev for almost a decade now. I still feel much more productive with Rails.

Rails isn't the right tool for every job, but I find that it's the right tool more often than not.

Rails is architected really well. Many decisions don't need to be made at all, and everything has a place. Plus, it's very friendly to extensibility and has a healthy ecosystem. It's mostly about the code that I don't need to write. It's really years beyond most other frameworks. Next will get there, but it will take it another 5 years. No shade on others, but Rails is just well built software with many years of learning and improving.

For highly reactive or "dynamic" systems, it probably isn't the right tool. Building a Figma or Notion. As @graypegg said in their comment, most websites work best as "CRUD forms". Though I would have said the same about email, but Hey.com exists so YMMV...

hrdwdmrbl | a day ago

Does Django still matter too?

canadiantim | a day ago

COBOL still matters, too. Would I chose to start a new project with it today, in 2025? Hell naw.

cratermoon | 19 hours ago

"Another trillion dollars worth of companies is being built on Next.js, and these web apps are faster and more polished than what could have been built on Ruby on Rails."

This makes absolutely no sense. HTTP is HTTP. Maybe one framework makes something more convenient than the other, but more "polished"? What does that even mean and what exactly is Next.js enabling?

henning | a day ago

“Your grandpas vinyl records” as analogy for Ruby on Rails.

Love it.

andrewstuart | a day ago

Not adopting SPA architecture is the MAIN mistake of DHH and RoR committee.

revskill | 13 hours ago

I only read the first sentence, but try running a Next.js app from 2 years ago.

Good luck with that.

fijiaarone | 20 hours ago

[flagged]

Trasmatta | a day ago

[flagged]

jaredcwhite | a day ago

[flagged]

martinsnow | a day ago

RoR needs to distance itself from DHH to matter.

openplatypus | a day ago

No.

mulnz | 20 hours ago

The one year working on a rails project I will never get back

What a horrendous pile of garbage, and before you ask, the project was started by two Rails experts.

Company almost went under because of it before we rewrote in Flask and react and then got acquired

zombiwoof | a day ago

I haven't learned PHP nor Ruby but if I had to go with one it would be PHP. Seems like I'd get the most utility out of it and prospects in my area.

In fact, I've never seen a RoR job posted in my area. Mostly PHP, Python and JS.

But you know, you gotta give credit where credit is due. Laravel would not be a thing if it weren't for RoR. RoR was incredibly influential.

Ok, so maybe I exaggerated, I've dabbled in these languages. Not really formally learned them. Or at least .... I can't say I've learned them if I haven't done any paid work with them.

thr0waway001 | 17 hours ago

As someone who directly worked on Ruby on Rails with developers, their worflows and deployments. It is far too niche to be viable in the mainstream and provides even less incentive to newer languages.

But it is a fun language.

Also latest Python is faster than the current Ruby let that sink in. You can go even faster if you do a compiled Python like PuPu.

Sparkyte | 10 hours ago