What gets forgotten in the debate is that Java is a reference implementation of all true OOP constructs:
Strongly-typed OOP languages have very-well established tried and true patterns for writing test-driven code
Ruby while not strongly typed, at least has a concept of Class/methods/inheritance/polymorphism . Problem with Ruby is as i am writing things TDD in it, the first half of my tests are there to ensure that my methods behave correctly when i pass them arguments of the wrong types, and my methods are littered with lines of code ensuring that my arguments have the expected properties. Totally retarded. And Ruby doesn't know anything about an Interface, but that's okay because it's got "fsck-all-typing" so it's not like you would even try to enforce modicums of contracts.
Anyway, as applications grow in complexity, building things TDD in strongly-typed OOP languages leads to more fun, and frequent refactoring which makes ur code more stable instead of more brittle.
I've written a crap ton of JS code. Java code too. And PHP. And a minimal amount of Ruby: I've appreciated their strengths. And drawbacks.
Feel free to learn the same thing I have the hard way: this panacea mentality to stacks is just one big circle jerk. If you think JS, in its current form, is the only true way to build web applications, then by all means, keep that head firmly planted in the sand while the rest of the World out innovates you with a blend of languages and platforms best-suited for their use-cases.