When I understand something in Rails, it's wonderful, but the sheer quantity of "magic" in Rails makes it very difficult to deal with when you only touch Rails projects periodically.
I never had this issue with Java frameworks. I could drop into a large Java codebase almost anywhere and quickly get a lay of the land.
On my personal project Rails' magic was okay because it simple. However, in my work I have found Rails projects written by really knowledgable Ruby users to be difficult to understand. More than likely it tends to be overuse of dynamic meta-programming.
I have worked in several languages sever side and I have never had a problem jumping into a codebase until I had a Ruby project to join.
Java's codegen is mostly done with standardized annotation processors, and they write code at build time so you can go look at the source they generated if you need to. And since it's generated at build time, everything is visible to the IDE.
There's a lot of reflection magic but it's not the wild west like Ruby can be because there's limits on what you can do to a class file once it's loaded. It's mostly limited to peeking at annotations on fields and methods and calling those methods or reading fields.
You can't redefine the methods or fields on an object at runtime, which prevents a lot of misguided insanity.
I never had this issue with Java frameworks. I could drop into a large Java codebase almost anywhere and quickly get a lay of the land.