>in Java you have to make those architecture choices day 1.
That's just not true. Very easy and advantageous to start out with say a simple container-less app with in-memory/flat file persistence and build up as you need. It's no different in Java and much more the norm in other JVM languages like Scala/Clojure.
Perhaps the Java bit isn't true... or isn't true anymore; I haven't done much serious development in Java since I started doing Rails consulting in college. I remember it being XML hell where you needed to plan ahead a lot more in terms of choices, but that said I've probably become a much better developer too.
If you think you're saving yourself from reinventing wheels by adding Yet Another Gem into your gemfile, then you'll quickly find yourself constrained by the code of other people instead of your own code and mental model.
Your app becomes a mat woven of interdependent Things That Almost Do What You Want and you'll spend more time wrestling with other people's code than the time it would've cost you to write and maintain exactly what you needed in the first place and no more.
It's sort of like that time you thought Devise was going to save you all this trouble but soon realized you merely moved the battlefront from (A) a diff'able domain that you control to (B) Google SERPs, Stack Overflow answers, and a Github wiki page of customization boilerplate and copy-and-paste'able incantations that sorta do what you want.
I agree with you that Rails still excels at allowing you to slap together a quick prototype, but I think that the world has caught up with Rails (and possibly bested it at this point).
I don't use Refinery, Devise, OmniAuth, Unicorn, Rack Rewrite, Fog, AMQP, or Heroku.
I use Passenger with Apache or Nginx, self-host, and write my own core functionality like authentication.
Rails is still great at having an idea and throwing together a proof of concept in one day; running "rails s" still works out of the box. It still allows you to defer the hard choices, until you actually have to make them. If you've cornered yourself by making your stack too complex too early, that's your own damn fault—in Java you have to make those architecture choices day 1.
Dynamic typing: if you treat Rails like Java, it acts like Java.