Ask HN: Would you still choose Ruby on Rails for a startup in 2025?

193 points by dondraper36 ↗ HN
It seems that Ruby and Ruby on Rails have some sort of renaissance now. I only know a bit of Ruby, but I hear it a lot that RoR is the best thing for prototyping and startups, even better than Django.

Personally, I write Go professionally and I love the simplicity and the absence of many dependencies. That said, Active Record and Active Job seem to do exactly what I write manually over and over again in Go due to having no frameworks.

Is Rails still that good?

181 comments

[ 3.0 ms ] story [ 260 ms ] thread
No, I use Next.JS. Never used Ruby on Rails, I don’t see why I would now.
Yes Rails is still good and IMHO Rails is still an amazing choice for a startup allowing you to do rapid iterations and focus on business logic.

Also it is true that Rails and Ruby are having a renaissance and the technical direction for both seems to me a good bet for the future.

In my case, I had some epiphany when I started reading essays by Paul Graham and Getting Real by Basecamp (well, this one is special in the context of RoR, of course).

I have always been very protective of Go and its minimalism, no huge frameworks like Django/RoR/Laravel (well, there are a few, but they aren't that popular or mainstream since the Go community favors just using the standard library).

However, the more I read about startups and prototyping, the more I think that spending time on boilerplate, writing custom migration scripts, and implementing database-backed job queues every single time is not what you want to spend your time on when you want to iterate as quickly as possible.

Also, another minor factor in favor of Ruby is the talks on destroyallsoftware such as "Functional core, imperative shell" and "Boundaries" where the author uses and seems to really like the language :)

On top of that, learning a new language/framework is always fun so I have already starting playing around with the official RoR guide.

Obviously it depends on what you're doing.

Used RoR back in the day and it's a great way to get stuff out the door. I coded like I was on fire. I've never had that sensation since then doing JS/TS/React blah-blah.

If you're doing a startup, your goal (I presume) is to validate your assumptions and get customers.

If it takes off you could always rewrite the backend in Go (which will buy you lots of time) and think of the frontend at a later date.

Remember 95% (odd) startups fail, so think about failing as fast as possible.

There is a large base of competent Rails practitioners.

It has good documentation.

The code base is stable.

There are mature libraries.

It is practical to learn Rails.

Sure there are very good reasons not to choose Rails, but the current year is not one of them.

And the work of building any new business...let alone a startup is approximately the same no matter which technologies you choose (modulo your expertise).

Time spent researching web frameworks postpones building the potentially money printing mechanism. When your research is done, you still won't have built anything.

If you are lucky enough to grow, you will be constantly rebuilding your systems. Unless you are Telegram. They used Erlang. It has the same features as Rails except for a large pool of practitioners. Good luck.

I just opened the official starting guide from the official RoR website and am very excited, to be honest.

I mean, the Go way of as few dependencies as possible and no opinionated frameworks is cool, but getting so much done for you is such a nice thing when you want to build fast. Also, switching to a purely REST API with just render json: <blah> is unbelievably fast. Writing the same in Go would include a lot of boilerplate.

Anyway, thanks for your response. I am really happy for Ruby, RoR, and the community.

Congratulations on starting!

the Go way of as few dependencies as possible and no opinionated frameworks

That is highly opinionated and the opinion is based on Google’s business model, resources, operational strategies and engineering wherewithal. No startup has anything like any of them.

> Writing the same in Go would include a lot of boilerplate.

Yes, it would be very hard for LLM to write this boilerplate.

It’s so long it would not fit in its limited context brain ;)

still you have to maintain the pile of boilerplate code and whoever does it, has a very narrow context window (aka human)
(comment deleted)
Yes, if you like it and use it. No if you prefer something else. Rails has a ton of stuff readily available with a base installation and a large community with deep knowledge. There are some cool new things that also came out recently that provide working defaults which allows a person or team to start working on biz requirements and stop futzing around with tech stacks.

The tech stack isn’t likely to be the deciding factor for a startup being successful these days. Pick whatever you or the team works best with.

Yes, I would. In fact, I'd use any boring technology [0]. Anything that's been around and battle tested.

If I was at a startup trying to solve a business problem, the last thing I'd want to do is bruise my knuckles fighting with my tools. Rails provides an opinionated way to structure your codebase as well as many existing modules that just work. It's not exclusive in this space, but it's a safe bet. You can get any dev that's familiar with rails to ramp up pretty quick. If you rolled a custom web framework in a dialect of javascript you may have a more challenging time.

0: https://boringtechnology.club

Is it boring technology? I'm actually reluctant to pick up Rails because it had always been sold by the Basecamp cult and Jason Fried gives off Musk vibes.

Many opinionated frameworks are also less reliable because of the layers of abstraction, so I'd also associate opinionated framework = sexy and temporary.

I've never actually used Rails in production, just did some tutorial, so I'm probably wrong about this.

The worst part about Rails is the 37signals people, in particular DHH.

But the good news is that you can just ignore them and enjoy the framework, like I do.

>The worst part about Rails is the 37signals people, in particular DHH.

Why? What is wrong with DHH?

Some people love him, some hate him.

It's also possible to appreciate the stuff he's done for software whilst not being in love with him as a person.

The good news is that I can just say: go ahead and Google “DHH blog”, read his most recent few blog posts and form your own opinions.

I’ve had a negative opinion of him for a good five years or so, but at least right now it’s easy to go read those and form your own strong opinion one way or another.

(comment deleted)
I listened to the latest Rails keynote, I never have before. I don't recall the exact details but it was a bit of a weird vibe for me.

> Many opinionated frameworks are also less reliable because of the layers of abstraction, so I'd also associate opinionated framework = sexy and temporary.

That's one of the persistent knocks against rails -- the layers of abstraction. I think that's fair, but it's a tradeoff. You either go along with it because it's advantageous or don't. Once you get familiar with the concepts and the theory of it the framework does what you expect, not a lot of surprises.

I'll push back on "temporary" though. It's been around for 20 years. It's old, so by definition it's not sexy.

Personally, I've built a number of apps in Rails that are still in production so it's a solid choice.

I think this depends on the context. I would argue that opinionated frameworks are *more* reliable, with the caveat that you need to know, and agree with those opinions.

I think of RoR, Laravel, Next.js, and Django etc. like I'm crowdsourcing my apps architecture so I can just worry about building out my business logic.

Even if you don't choose a framework at some point you end up building your own framework and introducing new opinions anyway, what I often see in these homegrown frameworks are.

1. Somewhat conflicting opinions expressed across different layers of abstraction that you build into your app over time.

2. In not having an opinion you try to satisfy many ways of solving problems introducing more edge case problems and serious over engineering.

For context, I've been in mobile for 10 years and in general it's the opposite - frameworks are rigid, but the layer under it shifts a lot. These frameworks tend to collapse in an earthquake like manner after multiple updates. We usually support iOS up to 2-3 years old, that's how bad it is.

The other approach is to build it on a platform that shifts with the changes, i.e. hybrid and web. But if you crack open the source of Cordova, you find all kinds of tangled, unmaintained, bad practice wiring and rewiring. I spent a few months trying to hack Cordova plugins and we decided to just scrap the entire code and build native; fully rewriting the app into a custom framework took 3 months.

However, it sounds like tools like Rails are built on a very sturdy platform that doesn't introduce breaking changes every year? That's an angle I haven't considered.

Unlike mobile, you have control over the underlying OS and full stack. So usually you aren’t forced to keep pace with your frameworks changes even if they were breaking. So long as you watch and patch security issues you’re fine, it will work forever. But you’ll occasionally likely feel a desire to upgrade things, I find it’s usually out of Want versus Need because it’s already so mature you have time to watch big new versions mature a bit before you roll to it. You might skip a major version or two because of this. Even since very early on I think I had a v1.x app that I continued hacking and building on until eventually moving to v4.x which was maybe 10 years later
I definitely recommend using Ruby, and Rails.

The Jason Fried and David Hansson Musk/Fascist vibes are real and are a problem. Most of the people in the Ruby community recognize that problem and are taking steps to mitigate that issue. Most of the core Rails committers don't work for 37 signals, and it's not really a thing made just by them.

Definitely use Rails to start a new project. The real hero here is Ruby and the Ruby ecosystem. It's incredibly stable and mature, But also getting faster every year. About 20 years ago Ruby web frameworks agreed on an ad hoc server interface api, Rack, which is one of the secrets that has made Ruby incredibly stable.

The package system, Ruby Gems, is really great. You can find a Gem for just about anything you could ever need or want. With mountains of Open Source projects and code to read to pick up patterns, or to see prior art to solve a unique problem you're encountering.

Anyways, it's a really solid choice.

>The Jason Fried and David Hansson Musk/Fascist vibes are real and are a problem.

What do you mean by this? Where have Jason Fried or David Hansson supported fascism? Your account is ten years old and this is the first comment you've ever made.

It doesn't mean I'm not right.

I mean that they give off Fascist vibes, and that it's a problem. Adoration for and support of fascist people and regimes are implicit support of fascism. Not explicit.

Go read their blogs, I'm sure you'll find lots of examples.

>I mean that they give off Fascist vibes, and that it's a problem

But you've just repeated the accusation and said that you think it's a problem. You haven't provided proof of any actual fascism.

I disagree that DHH is a fascist, I do agree he gives off Musk vibes e.g.

https://world.hey.com/dhh/mega-a0f62cd4 "so pumped up about Trump"

https://world.hey.com/dhh/failed-integration-and-the-fall-of... "multiculturalism is bad"

https://world.hey.com/dhh/the-social-media-censorship-era-is... "hooray for lack of fact checking"

(you may agree with him or not, and he makes better argument than Musk, but it's the same vibe)

What do any of those quotes have to do with fascism?
I think you’ve discovered the corollary to the “Everything I don’t like is woke” that people say right wingers do. “Everything we don’t like is fascist,” says the far left.

Only way to avoid being called either a fascist or woke (and I know some who are accused of both!) nowadays is to never say anything.

don't ask me, I said I don't think he's a fascist.
>It doesn't mean I'm not right.

It doesn't mean you're not wrong. Is this a personal vendetta?

>I mean that they give off Fascist vibes, and that it's a problem. Adoration for and support of fascist people and regimes are implicit support of fascism.

Where? Link examples where they supported Fascism. "Vibes" are meaningless, I need specific examples of these claims, else they can be tossed outright.

>Go read their blogs, I'm sure you'll find lots of examples.

Didn't find anything about supporting Fascism.

I'm not interested in prosecuting that David gives off fascist vibes. I don't have to provide proof. Kinda lazy that you're all not out there looking for the proof yourself.

To reorient the discussion around what the original poster talked about, that he gives off Elon Musk Vibes. And that it's a problem. Well it IS a problem. A problem openly, and vigorously discussed in the Ruby community.

Many people have left the Ruby community because of his behavior, and many more have chosen never to come into the community because of it. Because of the perceived strong association between him and the Ruby and Rails community at large.

Anyways, as per my original point, that despite the Fascist vibes from that guy, Ruby and Rails are still really great choices.

>I'm not interested in prosecuting that David gives off fascist vibes. I don't have to provide proof.

Oh, so you don't have any proof, got it. Your claims have been dismissed, David is not fascist.

>Kinda lazy that you're all not out there looking for the proof yourself.

There is no proof.

>To reorient the discussion around what the original poster talked about, that he gives off Elon Musk Vibes. And that it's a problem. Well it IS a problem.

No proof of this either, so your claim is dismissed outright.

>A problem openly, and vigorously discussed in the Ruby community.

Any proof of this? Who claims it's a problem?

>Many people have left the Ruby community because of his behavior

Looks like a loud minority of leftist activists may have left. That explains how Ruby has only gotten better since.

>many more have chosen never to come into the community because of it.

Many more have chose to join the community now that the activists are gone.

>Anyways, as per my original point, that despite the Fascist vibes from that guy

There are no Fascist vibes as shown above.

Not surprised I didn't get a response. Ten year old account wasted on some bizarre personal vendetta or virtue signal. Embarrassing.
> I don't have to provide proof. Kinda lazy that you're all not out there looking for the proof yourself

Ironically, this attitude is quite Trumpian. I hope you're just pretending to cover the laziness of your argument.

>I'm actually reluctant to pick up Rails because it had always been sold by the Basecamp cult and Jason Fried gives off Musk vibes.

Why? What "Musk vibes" have they given off?

If you are on certain political spectrum, then opposite political spectrum would certainly gives similar vibes as that spectrum's prominent figure.
I'm on the pro-VC, anti-bootstrap spectrum and so is Elon Musk. American political spectrum of right vs left, authorarian vs libertarian makes little sense to me.

My political compass tends to be BRICS vs G7, religious vs secular. If you're saying they're both G7-secular, I guess that makes sense too.

edit: Also I was not even aware of Musk and the fascist thing before posting the comment, and I can see how it may have been interpreted differently now, lol.

Success because of A and attributing it to B. There's a bit of megalomania too. He has a beef against VC funding. He lost 1/3 of staff once when he implemented a policy of no personal opinions at Basecamp. He is often shared because of his unpopular opinions and his successes are used to fortify those opinions.

I'm not saying Fried or Musk are wrong, and they both have brilliant insights at times. If Musk was crazy and wrong all the time, he wouldn't be a brand name.

But both of them also appeal to susceptible people who seem to think that a few good opinions make them good all the time. Basecamp isn't even a good tool, it's a pretty average one, yet prettier than Jira. But it's down this funnel of people who will buy whatever Fried and DHH sell them.

And what I'm getting at is whether Rails is one of those things that is average but prettier than Node?

>he implemented a policy of no personal opinions at Basecamp

Except he didn't do that, what he implemented was not making personal politics a part of Basecamp's workplace culture, which is a much more moderate thing than what you're accusing him of here.

You might not be aware of this, but it's possible to have a personal opinion about something and not bring societal and political discussions to the company account or forum. Here's the text of the new policy:

https://world.hey.com/jason/changes-at-basecamp-7f32afc5

"People can take the conversations with willing co-workers to Signal, Whatsapp, or even a personal Basecamp account, but it can't happen where the work happens anymore."

Again, this is not at all the same thing as "no personal opinions [allowed] at Basecamp."

>it had always been sold by the Basecamp cult and Jason Fried gives off Musk vibes.

Not affiliated with either of those things, but what does this even mean? Basecamp is a business. Jason Fried is a businessman. Basecamp is a product developed by 37 Signals, a company Fried co-founded.

How does any of that create "Musk vibes"? I'm seriously wondering what this is all about.

I use and love using rails, but the centrality of influence of the musk-vibes-camp is for me too the biggest downside. Yes in response to a sibling comment, the RailsWorld keynote was super weird culty vibe, agreed. But hey everything's got ups and downs. Rails is great for me to work in. Hopefully it will remain that way. There are other Rails maintainers who are not basecamp-related, some who say that dhh and basecamp's power over Rails is not as great as people think and it really is distributed maintainership and control, hopefully that is true enough and will remain so.

i know what you mean about abstraction and flexibilty, but I think Rails mostly avoids that and is actually quite flexible. But I don't use the new hotwire JS stuff, that is one area where I share your concern. It's easy to use Rails without it, with the JS of your choice.

Rails (and its ecosystem) is anything but boring with Turbo/Hotwire, StimulusJS, a shift away from queues using Redis to the database w/ Solid Queue, a reexamination of how SQLite can be used as a prod database (when tuned), and a new rich text editor on the way…

Some of these are eyebrow raising and certainly not boring!

Shifting to solid queue, backed by your rdbms, is more boring than using redis. Successfully deploying an app without anything but a database server is pretty powerful. Everything just works. I would say that's pretty boring :)
> Everything just works.

I long to live in your world where this is the case!

Unfortunately the migration from Sidekiq + Redis → Solid Queue has been anything but boring.

I started fresh from Rails 8, so maybe that's why I didn't deal w/ that migration problem. I'm sorry it was stressful :(
We're about to do this as well, but from resque. Got any tips to share?
TBH we backed out of it as we didn't need to make the change now.
Would love to read about it if you have a write up of the problem you encountered.
I think they are launching a markdown editor, not rich text
He meant that it's been around for a while and is relatively stable. Not that it's literally boring.
> That said, Active Record and Active Job seem to do exactly what I write manually over and over again in Go

There goes your answer. Golang was made for Google to simply - onboard junior engineers quickly. It wasn't made to make products quickly.

"Still" implies that one would have chosen it before.

Ironically, one of the reasons my startup died was using Elixir as if it was Rails[1].

Even aside from type safety considerations: in RoR variable bindings appear out of thin air! Imagine onboarding a new developer – not only do they need to learn the arcane language, but then they need to learn a bunch of non-hygienic macros!

I remember the lightbulb moment when I was patching Ruby's Devise authentication library to add verifiable credentials to it when I realised that a variable used there is not a 0-ary function, but actually something that is just bound in context by magic. Also, even Rails experts have to go on a hunt to understand magic[2] too!

I would personally just use typescript bridged to rust to preserve types ans sqlx for type-safe queries to the database.

Or use something like bubble.io if you want to iterate on ad hoc things until you get there!

[1]: https://memorici.de/posts/pre-mortem/ [2]: https://medium.com/launch-school/params-in-rails-where-do-th...

No. As a Django dev I spend 6 months on a RoR project, and by far it was the least productive time of my 8 year career in web development. I understand why people like it, but coming from Django; u could never imagine being a part of a RoR stack again.
Yeah I recently spun up a rails project
I started a project with it. Just the backend mind. Reasons, speed to get up and running. Familiarity with its pros and cons. Also familiar with rspec and actually enjoy writing rspec.
What are your actual goals.

Do you want to learn Ruby. Then go for it. If not pick a different language. Pick one you know.

You might not even need a full backend server. Firebase or Syperbase might be enough

I am in technical diligence so I talk to companies going from start up to mid stage all the time (ie when they get bought or are getting a big investment). I've been doing it for six years now. My personal anecdotal observation is that companies now tell me it is much harder to hire for Ruby than for Python or Node back ends, for what that's worth.

I also, for whatever reason, seem to encounter more companies with "stuck on old version" tech debt on RoR more than on Python or Node. I'm not sure why this is.

I've found Rails over the last few versions to be very easy to upgrade.

Where I've had problems it's been 3rd party libraries that try to force alternatives to core behaviour like ActiveModel but then break their own API a year down the line.

cough Looking at you Dry::Validation.

You just do things like sticking to POROs for business logic it's pretty smooth. I just follow the advice in the Sustainable Rails book.

https://sustainable-rails.com/

Yeah, that's why I said I have no idea why that is. I'm sure it's not caused by Rails but rather some kind of secondary associative reason. (ie, rails devs leave and they have a hard time replacing with seniors or something). Coming from a Python background I find it weird. But it's definitely a thing.
It really depends on the project size and amount of dependencies. Ruby is very flexible, so dependencies can make a huge mess. Vanilla Rails doesn’t have those issues.
Rails or Laravel, take your pick. Personally, I've been using Laravel + Filament. It's so fast to get up and running with & it doesn't hamstring you when you want to do anything more complex.
Yes absolutely, although I don't see anything wrong with sticking to Go either if you know and like it.

Rails 8 just gives you so much out of the box for a small start up that it would be my personal choice.

Having Hotwire for PWAs without having to have a frontend build pipeline or Hotwire Native for iOS and Android allowing you to reuse for your existing web frontend for example.

Or using Kamal for deployments to cheap commodity servers without having to setup K8s or use expensive cloud services.

Even things like ActionText for rich page content are a big win.

I mean you can replace everything later if you grow big enough to need separate mobile, devops and frontend teams but if it's only a few of you why bother when you could be delivering your MVP?

No. However, Rails addresses many items on The List. Hence, it's worth using it as a checklist. In reality, things like cache-busting codes are pretty straightforward to write in <language of your choice> and choices about how to represent database entities and validate incoming data require contextual and experiential validation, one size (ActiveRecord) truly doesn't fit all.

One is well served to learn Rails for many reasons, but i would not start a green field 2025 project with any framework.

I have been burned by rapid development frameworks in the past, not Rails, but anyway, by now I've been rolling my own stacks for awhile, and it was mainly a question of language ecosystems.

Have a gander at Crystal Lang, BTW, and Amber and Lucky frameworks

I'm building a trial balloon in Crystal right now, though not Amber or Lucky. They had their 1.0 release (1.15, even), but it does not feel ready for production. The documentation is not great, the gotchas are unintuitive, and the discussion feels like they're not sure what direction to take the language. The runtime (event loop, fiber scheduler, and garbage collector) dependency means there's plenty of "magic" involved, making it feel significantly more like a framework than a language. Maybe that makes sense if they're targeting the web. If you're on the fence about choosing an established framework like Rails, though, Crystal is not the direction to go yet.
i would, especially if there is mobile ui on horizon (hotwire)

+ added ports and adapters (aka hexagonal architecture, there are many articles on how to do it in ror)

disclaimer: i work with ror since 2006 so i have a strong bias.

I wouldn't because it is difficult to recruit and find developers for it.
I use node-ts. Why? I have access to every library I will need from any provider or for any task like phone number validation.

Node is fast enough, easy to develop, deploy, and scale. Anything that is slow can be ported to Go.

It is easy to find solutions to my immediate problems using LLMs.

I’m just using express and my data layer consists of neo4j and qdrant. All code is single responsibility and I use layered architecture. Easy to test and feed in to AI.

I used to work in rails, mostly to port existing code to Go or node. I found it way too messy and complicated, and our codebase was awful. I am in the minority though as I know many love rails.

> I found it way too messy and complicated, and our codebase was awful.

Are you saying that’s because RoR was used? Doesn’t seem plausible. Messy bad code is the fault of the programmer, not the language/framework

Interesting as I currently work with 15 year old RoR database and a 2 years old Node project and every time I jump into the later I want to kill myself.

And I’m a mainly JS dev. Node is extremely easy to f up, so is the frontend. And with all the generated code today… it’s gonna get only worse.

(comment deleted)
Yes, it has everything (+ lots of packages/gems because of Ruby) and you'll likely be able to write a Web App / API much faster than in Go or any other language.

I've worked in multiple languages, and personally enjoy Go and Rust, but nothing, even Django, comes close to the speed I can address a business/user need by using Rails.

When running a Startup, you want to quickly be able to try new approaches, and if they suck, you just remove the code and start again, or change. Rails is unmatched that way.

It's worth saying that Rails doesn't come with any kind of library for you to abstract business domains and you should avoid callbacks (specifically after_save / after_commit can be really bad in big applications with technical debt), so look for a library for this or write pure Ruby classes.

Yup left my java enterprise job to switch back to ruby on rails
It depends on the problem the startup is aiming to solve. E.g, I am pretty sure that Go is much better for building infrastructure products than Ruby.
I’ve worked on several projects this past year, some with newer frameworks, others with no-code solutions like Bubble and I keep coming back to Rails. It strikes that perfect balance between speed and clarity, and so many of the features we’d otherwise code from scratch like admin panels, authentication, queuing, mailing are already there for you to pick.

When you’re building and iterating quickly, Rails save you from manually wiring up all the plumbing. You get enough convention to move fast, but with the flexibility to make your own decisions when necessary.

It's a no brainer for me. I prioritize my happiness above all else right now and Ruby with Rails is just joy.