Things about Rails that I think are dumb:

  • ActiveRecord
    • Database attributes are allowed to be null be default
    • Callbacks are a mess that complicate code
    • Scopes are basically unnecessary, and their syntax is strange
  • General
    • Hides way too much of Ruby from you, as evidenced by the fact that I did Rails development for 5 years before understanding the different between procs, blocks, and lambdas.
    • Rails seems to prefer light DSLs to plain Ruby when it isn't necessary.
    • There's a general design choice in Rails that walks the line between slightly cryptic and slightly human-readable, yet manages to gather adoptees around it that aren't opinionated about things either way, producing pretty mediocre results.
    • The "convention over configuration" norm doesn't encourage people to write less code - nothing but experience can do that. Instead it hides information rather than bringing the problem to the forefront and forcing people to see just how nasty things are.
    • Encourages the slow formation of monoliths, because adding "just one more thing" never feels like too much until it's too late. Part of the benefit of systems that don't try to do a bunch of stuff for you is that they force you not to just do smaller things, but better things as a result.
    • If Rails API had been the starting place (as opposed to an HTML-based framework) life would have been better now.
    • In development you have to restart an app when there are certain changes (routing, for example), but not other kinds of changes (such as the views). There seems to be no good solution to this except half-cocked, bolted-on additional tools, which complicate things. I'd rather see something that is (as much as possible) a drop-in replacement for an existing tool, but simpler.
  • What are you going to do about it?
    • Basically go the route of the lesscode movement