For a long time, I really hated on Ruby on Rails. It did too many things, too much magic, not following idioms, etc.
From a developer perspective, these were all valid points. If I was to come up with a solution that’s abstracted in a better way, has less magic, then it’d be more valuable than Rails. That it probably would take longer wasn’t a concern. I was a Software Developer and it was my job to deliver well-designed and abstracted solutions.
My point of view has changed over the last years. Direct interaction with customers has taught me a lot.
The customer doesn’t really care if I used Rails, Django, Sinatra, or a custom-built web framework. It just needs to do its job.
I use Rails whenever I can to get the job done faster and more reliably, whenever I can. Technical elegance is not as important anymore as a happy and productive customer.