I will still use Rails (and be happy)

by Paweł Świątkowski
18 May 2016

You know, in Ruby world we have this framework called Ruby on Rails. You probably have heard about it before. It helps people write web applications for over 10 years now and is a main (if not only) reason for many people to come to Ruby in the first place. We might as well state it this way: There is a big chance that Ruby would not become popular without Rails.

Of course, not everything in Rails is perfect. It’s philosophy of convention-first and being very opinionated has been driving many developer crazy. Myself included. Especially when your applications become huge and are doing thousands of things besides serving HTTP requests – you will not like Rails for a moment. You will be angry at its creators. And you technical leader that chose Rails at the begining of the project. And things will go even worse if you’re that tech leader.

But isn’t it true for pretty much every technology (language, framework, library) out there?

Ceterum censeo Railsem esse delendam

Since about three years I observe strong movement growing inside of Ruby community. Its main slogans include Ruby is not only Rails, We can do better etc. It is a very good thing that we have such voices and they are backed by emazing projects like Trailblazer, Hanami or dry-web.

The problem (at least mine) is that atmosphere around this movement has become dense and unhealthy. Some people, instead of building great app using aforementioned tools or help develop them, are focusing on bashing Rails instead. On wishing it dead. Even on calling people still using Rails as stupid or DHH cultists. It almost seems that saying Please, Rails, die! is some kind of Rite of Passage these days to be considered a solid Ruby developer.

I keep hearing that Rails is yesterday’s software or that it slowing us and the web down with its standards rooted in outdated concept of the web. Of course, the web did change in the past decade. But it evolved, not revolted with burning all the bridges behind.

Not all web is your shiny APIs with React on top…

… in fact I dare say its minority of web. Even minority of web-written-in-Ruby. All the news sites, all funny-cat-images portals, blogs etc. – it is plain old information displayed in HTML server by the server. Not everything must be realtime, using websockets.

And that’s probably the root cause. At some point, since Rails was so good at creating web sites, we started to think of it as a silver bullet for everything web-related.

– Hey, we want to make this project. It’s a web service…
– LET’S USE RAILS!

That’s how I picture it.

But of course Rails is not meant to be the best at everything and I’m pretty sure it never was. So my advice would be: don’t use it in those cases. But also let people use it where it excels.

I will still use Rails

One of my side projects is an application serving a community of maybe 500 people in Poland. It was written about 4 years ago and is live since then. It is basically a CMS, with with very specifically stuctured content, on which some operations are performed. I am more than sure that this wouldn’t be achievable in reasonable shape in Wordpress or Drupal (I know, because sometimes I use them too) and therefore it’s written in Rails.

I never had any problems with it. Even better, sometimes when I realized Oh shit, I need this new feature in 36 hours before some event starts I was usually able to implement it and even get a decent amount of sleep. And that’s the true power of Rails. If I was to make a decision today again, I would probably still choose Rails. Even though I have a soft spot for Hanami and Phoenix, those would just not be as good as Rails can.

So my point here is: please, let me do in Rails what I want to do in Rails (and what Rails is made for) and don’t categorize me as inferior programmer just because I use the tool you don’t like.

end of the article

Tags: ruby rails general thoughts

This article was written by me – Paweł Świątkowski – on 18 May 2016. I'm on Fediverse (Ruby-flavoured account, Elixir-flavoured account). Let's talk.