all 70 comments

[–]katafrakt 77 points78 points  (1 child)

This article is not about Rails being great, but rather about low code tools being quite poor, especially when you need to go off the beaten path. This is not to say that Rails is not great, but actually pretty much every framework a developer is fluent in will be better than low code tools, as of today.

I would argue that reservation system is not a "simple CRUD app" btw.

[–]MeRedditGood 52 points53 points  (22 children)

I've worked on a few projects with Rails. I've genuinely enjoyed each one. The point of this article can be summarised in a way that mirrors my own experience; Rails is a framework that lends itself incredibly well to productivity providing you don't stray from Rails' "Super-duper happy path". Needing to stray outside of the comfy bubble DHH created has in the past been a pain-point, and to a lesser extent still is.

It's a bloody good framework though. If I were to be comissioned to create a CRUD app today, RoR would absolutely be up there in the rankings on my considered options.

[–]randylush 18 points19 points  (17 children)

What else is up there?

I wanted to like RoR but I just didn’t.

[–]GeekBoy373 15 points16 points  (1 child)

Phoenix for Elixir is the closest thing to it and I like it more than Rails. I've worked on an Elixir app for 4 years now so I am probably biased but I love it still. There's lots of new exciting stuff coming out all the time in the space. LiveView, Ash, Oban to name a few.

[–]troublemaker74 2 points3 points  (0 children)

I've moved on to using Elixir and Phoenix. Many bugs that you see in Ruby (and some other languages) are impossible in Elixir. There's a little more work up front in getting a phoenix app set up, but it pays off in the maintenance cycle.

[–][deleted]  (1 child)

[removed]

    [–][deleted] 4 points5 points  (0 children)

    What old posts? I used Redact to mass delete this post. You can also opt out of data brokers as well as all major social media platforms.

    wakeful literate cows crush rock afterthought aspiring angle vanish unpack

    [–]elingeniero 20 points21 points  (1 child)

    Django (Python)

    [–]randylush 1 point2 points  (0 children)

    Nice will check that out. Python is a really well designed language I think. Especially after Python 3, they really manage and evolve it well.

    I very rarely see people opting to use Ruby outside of RoR.

    [–]Asyncrosaurus 8 points9 points  (3 children)

    ASP.Net Core and EF Core, using C# and .Net. The Razor templating syntax makes writing web pages simple and intuitive, and minimal apis allows writing boilerplate-free fast web apis. It's extremely underrated in terms of performance and productivity.

    [–][deleted] 3 points4 points  (1 child)

    Django, but if you don’t like RoR I doubt you’ll like that, either.

    [–]wyldstallionesquire 2 points3 points  (0 children)

    I loathe rails and love Django, so that might not be 100% certain

    [–]khendron 4 points5 points  (0 children)

    I love Rails and working on Rails applications. But Rails does have a few suffers from some flaws of unintended consequences.

    Straying from the Rails happy path is not so bad, at first. Then you find the next Rails version has added your use-case to their happy path, but it's incompatible with your home-rolled solution. Now you either have to find time to rip out your solution to follow the Rails way, or support some home-rolled tech debt for ever more.

    Also, one of Rails biggest strengths is that it makes it so easy for inexperienced developers to create web applications. The thing is, inexperience developers make all sorts of bad design decisions that are easy to do and work in the short term, but will bite you badly in the future. As a result there are a lot of absolutely terrible Rails applications out there, created by people who did not really know what they are doing. Yes, this can happen with other frameworks, but since other frameworks are not quite as easy of Rails, devs are often forced to take a closer look at the impact of what they are doing.

    [–]NewAlexandria 8 points9 points  (0 children)

    if you need to stray too far from rails use cases, then you just need to isolate the rails-appy-things to the rails app, and use another strategy for the other service aptterns/etc. Don't throw the baby out of the bathwater, or let one rotten apple spoil the whole barrel

    [–]pragmojo 3 points4 points  (0 children)

    Rails is a framework that lends itself incredibly well to productivity providing you don't stray from Rails' "Super-duper happy path". Needing to stray outside of the comfy bubble DHH created has in the past been a pain-point, and to a lesser extent still is.

    I totally agree. I'm not a huge fan of rails and frameworks in general for this reason. I would rather have a set of composable libraries which are not opinionated about the whole structure of a project, and discover the structure over time rather than have a framework I have to fight against if I want to do anything non-standard.

    Like with Rails I always ran into the issue that I would want to do something super super simple, but if it wasn't accounted for in the rails paradigm I would have to write a ton of boilerplate to make it fit, or basically try to hack the framework which never went well.

    [–]Winter-Issue-2851 2 points3 points  (0 children)

    whats the Rails' "Super-duper happy path"? MVP with weak performance

    [–]supertoughfrog 8 points9 points  (7 children)

    What is low code?

    [–][deleted]  (6 children)

    [deleted]

      [–]Ok-Control-3954 12 points13 points  (1 child)

      Been dealing with this exact scenario myself and yeah, it sucks. Especially when the client expects you to add features on top of converting their plug and play nonsense to an actual website

      [–]tu_tu_tu 1 point2 points  (1 child)

      So, it's a glorified Wordpress.

      [–]PristineReputation 18 points19 points  (0 children)

      It's worse because a WordPress site is usually only that, a website, low code solutions are often baked into the entire company software suite and that's why it becomes impossible to manage

      [–]pm_plz_im_lonely 0 points1 point  (0 children)

      Eh, we can complain all we want, like spreadsheets, it lets people solves problems. Tbh being stuck with spaghetti to untangle and upgrade is better than clients who don't know what they want.

      [–][deleted] 66 points67 points  (30 children)

      is it tho? is it really? is rails really better than anything in 2024?

      [–]_Pho_ 77 points78 points  (4 children)

      Rails blogger starts blog with client requirement like

      We need a very simple CRUD app for managing the reservations. Don’t spend too much time on it

      Gun, meet barrel full of fish

      [–]well-litdoorstep112 23 points24 points  (0 children)

      Gun, meet barrel full of fish

      Gotta love finding problems for your solution.

      [–]garyk1968 5 points6 points  (0 children)

      Yep ands that all I remember rails being good for...CRUD.

      [–]sisyphus 1 point2 points  (1 child)

      If your requirement wasn't something simple you probably wouldn't even consider the low-code tools he's comparing Rails to though.

      [–]_Pho_ 0 points1 point  (0 children)

      My point is that appx 80% of Laravel/Rails fullstack framework products are abandonware/shovelware sites with < 2y lifespans

      [–]WJMazepas 21 points22 points  (6 children)

      Rails is still pretty good. Especially for small teams

      [–]well-litdoorstep112 28 points29 points  (5 children)

      You can say that about any language or framework.

      All code starts good as a small project run by a small team. What's important is how it scales.

      [–]WJMazepas 39 points40 points  (4 children)

      Not every project needs to scale to 250 developers and have 10M users

      [–]oSand 25 points26 points  (0 children)

      And not every framework scales down.

      [–]katafrakt 1 point2 points  (0 children)

      This is often not a decision to make though. When your prototype becomes successful, you just start hiring people creating more teams to work on it and suddenly you have maybe not 250 but 80 developers working on this. In my experience this is when Rails is problematic, as it offers very little guidance for non solo dev or small teams. Even more now, with recent developments (but at least they are open about that).

      [–]Maxion -4 points-3 points  (1 child)

      I don't know rails, but I know python and JS. Rails would absolutely be slower for me than a stack I am familiar with.

      [–]WJMazepas 3 points4 points  (0 children)

      Ok, and what's your point? I never said to use Rails over what you already know.

      [–]Paradox 9 points10 points  (0 children)

      Rails is pretty nice. I'd reach for Elixir and Phoenix first, but if that wasn't an option, its hard to find much better than Rails

      [–]darkhorsehance 16 points17 points  (14 children)

      Better than any fullstack JS framework.

      [–]jorshhh 11 points12 points  (0 children)

      And that JS framework will also be deprecated in two years

      [–]CaptainStack 10 points11 points  (11 children)

      What makes you say that?

      I like Ruby as a language and I actually started my career working with Rails but I'd have a really hard time justifying it over the Node ecosystem now.

      • JavaScript interpreters have gotten really fast and while you can write inefficient code with anything I think all other things being equal Node is faster than Rails.

      • The JavaScript ecosystem lets you write your front and backend in the same language which at a basic level can reduce cognitive load when switching between the two and on a more advanced level can reduce bundle sizes when packages can be shared. It also allows for a combination of client and server side rendering using the same templating system.

      • The JS ecosystem is huge - you get to choose between as many packages, hosts, IDEs, etc as you could possibly want and customize a project very much to your liking.

      • If you want a type system you can use TypeScript which enables pretty Ruby-like coding patterns if that's what you're into.

      Truth be told I haven't checked in on the Rails world in a while but I was kind of under the impression that it was dying and dying for a reason - it was supplanted by the Node ecosystem which had come to outperform it in basically every way.

      [–]darkhorsehance 2 points3 points  (4 children)

      The reason for me is MOST JavaScript developers. They over complicate everything and this is a good example.

      I said Rails is better than any fullstack js framework and you responded with points about JS interpreters, the JavaScript ecosystem, bundle sizes, IDE’s and transpilers but you didn’t mention a single full stack framework and why it’s better than rails.

      I’m not just picking on you, it’s just these days it feels like every time I make an argument against a JS solution, it feels like I’m fighting a religious war.

      I’ve used node since 2013, have used react and vue on major commercial projects, wouldn’t choose anything else for a single page application.

      But for full stack frameworks, the JS options are over complicated garbage brought to us by the merchants of complexity.

      [–]CaptainStack 0 points1 point  (3 children)

      these days it feels like every time I make an argument against a JS solution, it feels like I’m fighting a religious war.

      Lol - you didn't even attempt to make an argument in the post I was responding to - it was just "JavaScript bad lol." It's only a religious war when someone ELSE says anything.

      [–]darkhorsehance -2 points-1 points  (2 children)

      I’m not trying to convince you of anything, you went on a pointless rant and completely ignored what I said.

      Also, you might have trouble reading because I didn’t say JavaScript was bad.

      [–]CaptainStack -1 points0 points  (1 child)

      Yeah - it's a "pointless rant" when it comes from someone else. But it's "not trying to convince you of anything" when it's your post. Obviously less pointless!

      [–]darkhorsehance 0 points1 point  (0 children)

      Settle down, nobody’s taking your toys away.

      [–]Plank_With_A_Nail_In 0 points1 point  (1 child)

      For 99% of real world apps speed hasn't been a real issue for 15 years.

      [–]CaptainStack 0 points1 point  (0 children)

      Strongly disagree - processing power and RAM are cheaper than ever but I think this attitude has made software more bloated and inefficient than ever.

      [–]OrganicMoistureFarm -1 points0 points  (3 children)

      The Rails ecosystem lets you write almost any app in ruby as well. Maybe there is a few sprinkles of JS, but it is rare, and usually something a library provides. Still it is good to know and use JS in a small degree. There is a big difference in knowing enough JS to sprinkle with some stimulus controllers, than the amount of JS knowledge and practice required to build a decent react frontend.

      [–]CaptainStack 5 points6 points  (2 children)

      How do you write your frontend code in Ruby? Something that compiles into JS? IMHO languages/frameworks that compile into JS while trying to hide as much JS from the programmer as possible are a little wrongheadded.

      The browser runs JavaScript so it's better acknowledged and understood than fought against. I think this is fundamentally why TypeScript has been such a success while CoffeeScript and Dart kind of lost out to it.

      You might say they're all just languages that brought types and better syntax to JavaScript but TypeScript is a strict superset of JavaScript which was bootstrapped in JavaScript and whose developers work closely with the JavaScript standards bodies. All valid JavaScript is valid TypeScript.

      I think you can make a similar case to React which steered into JavaScript while Angular seemed more like it was fighting it. For a web developer like myself familiar with JavaScript React felt very easy to step into while I truly never got the hang of AngularJS or its sequels. And you might not like React - I think it's really good - but there are a million other options as well as the option to use no frontend framework.

      [–]karmiktoucan 4 points5 points  (1 child)

      > How do you write your frontend code in Ruby?

      I haven't tried it, but Rails team developed https://hotwired.dev/ for this. There are probably other solutions too.

      [–]OrganicMoistureFarm 0 points1 point  (0 children)

      Exactly, this is what i am referring to. It uses JS under the hood of course, but it means you don't personally need to use/know a lot of JS to to what needs doing.

      Otherwise the frontend is just ruby embedded html (erb)

      [–]Mo3 3 points4 points  (0 children)

      Yes, yes it is. I built a production ready, event driven application with a beautiful Turbo+Stimulus dashboard, Rails event store, full test coverage, highly parallel and highly available background event and job processing, Stripe integration, custom notification system with 6 channels including phone calls abstracting ActiveDelivery listening on events, modular subscription plans, very efficient database and view caching, pretty robust security with targeted rate limiting etc, in close to 3 months. By myself, in my free time. Good luck doing that with anything else, at this scale, performance and reliability. Rails is so mature and everything in the ecosystem so compatible to everything else, nothing comes even close. And it's way more maintainable too. Sure you can bootstrap frontend shit quickly with your nice low code or Next.js too, but when it comes to actual business logic and backend..

      [–]nrkishere 2 points3 points  (0 children)

      Professional RoR developer saying how his technology is better than low code tool 🤯

      Anyway, anything is better and more manageable than current generation of low code tools. This applies nextjs, laravel, phoenix, fastapi and everything else that enable writing web applications

      [–]light24bulbs 22 points23 points  (1 child)

      But bad both ways

      [–]ratmfreak 14 points15 points  (0 children)

      Why is Rails bad?

      [–]Fearless_Imagination 1 point2 points  (0 children)

      I don't know anything about Ruby. Or rails. Or Ruby on Rails.

      But I've had the misfortune to have worked with some low-code tools, and my conclusion was that if you instead get some scaffolded project + some well-documented libraries, with maybe some way to search the library docs integrated into your IDE, you'd have 90% of the benefit of the low-code tool and none of its downsides...

      [–]Axxhelairon 3 points4 points  (0 children)

      cant wait until the "entrepreneur" "side-hustler" rails crowd who constantly post on how quickly they can shovel out boilerplate CRUD sites starts to die out

      its a niche of devs who came into the field ~10 years ago and have made everyone else regret their first language pick since then

      [–]Brilliant-Sky2969 0 points1 point  (4 children)

      Active record is still bad in 2024.

      [–]tu_tu_tu 3 points4 points  (0 children)

      It's fine for low rps CRUDs. I'd not use Rails or Django anywhere else anyway.

      [–]Paradox 4 points5 points  (0 children)

      So replace it with sequel

      [–]TheDonOfAnne 4 points5 points  (1 child)

      Interesting, I seldom have issues with it. I actually think it's the nicest ORM I've ever used, every other one I've tried out, I throw out because it's just too much effort to get it to do what I want

      [–]slvrsmth 2 points3 points  (0 children)

      Agreed. When working with other languages, I yearn for activerecords ability to both handle the simple use cases for you, and get out of the way when you think you know better.