Good points, and I certainly understand why the Ruby community is so passionate. The language is expressive, mutable, and has some nice syntax. My personal problems are:
- Rails is the monolith that gives you all of that auth/database/etc capability, and it's very non-trivial to upgrade
- Refactoring a large codebase with a dynamic, untyped language like Ruby is extremely difficult without 100% test coverage
- Unusual syntax conventions which can get you into trouble (y = x.blah vs x.blah!), strings vs symbols, magical naming conventions for Rails, etc etc
- Auto-loading is a mess
- ActiveRecord is great until you care about DB performance, and then you end up continually working around it's quirks (the N+1 problem, indexes failing due to int/string type conversion, etc)
- Everything in Rails is convention over configuration. File paths, names of classes, names of routes, mapping of AR to DB table, etc. Sure it "just works", but when it doesn't, it's not always easy to figure out why.
- Monkey-patching is cute, but, seriously? Hot-patching system library functions?
- What's a variable? What's an accessor? What's a function? Parentheses are optional, return is optional (yet @ is required for class/instance vars?)
Again, none of this prevents you from building a quick and easy CRUD app, but I've found the deeper I go, the less I like it.