JS is actually a decent language, and imho with more recent advancements better still. Combined with npm there is simply anything you might need available (for the most part). Not that there aren't a lot of gems out there.
In the end, having one language to think about, rather than how to shoehorn communications and logic between two languages is simply more difficult. I went, similarly from C# to node, not because I didn't like C#, but because the friction in writing JS on the server and the client was so reduced from two differing languages throughout the day.
Similarly a lot of devs went to simpler data stores so they don't have to deal with layers of ORMs that only half work, and can simply store and query basic data forms. Mongo fits this development model well, early hiccups in the technology aside.
In the end, it allows you to build web apps in one language, and not have to write translations to get from one to the other on the client.
I've helped maintain REST APIs in both Java and NodeJS at different points in time.
Doing so in Java was always a painful iterative process; ask the ORM for data, painstakingly map the data to Java DTOs created mostly for defining JSON structure, pass it off to RESTEasy or some similar framework, see how the JSON turned out. Adjust and repeat until satisfied. Yuck.
In NodeJS, by contrast, fire off the SQL to get the data, map into the JS object that you need and return it.
Kind of funny how, years back, a selling point of GWT was that you could use the same language across the stack. It wasn't a bad idea, just a poor choice of language.
One can argue that Ruby is prettier, but JS can be very good with thoughtful api design.
ES5, for me, was a complete surprise because I wasn't really expecting to enjoy using it. Perhaps I let myself be unduly influenced by the crowds ;-).
Prototypical inheritance is surprisingly nice. It is a simple concept and it is obvious exactly what's going on under the hood (if you care to look ;-) ). It allows a lot of functionality without requiring a large amount of language syntax. Ruby, on the other hand, has a more complicated (perhaps one can say more sophisticated) system, but requires a lot of language features to implement. Things like method_missing and all of the meta programming features feel bolted on.
ES5 has this really nice core design where language features just pop out. So private accessibility is done simply by using closures, etc. You have higher order functions without the absolute craziness of procs and blocs. Even things like mixins and traits are incredibly easy to implement with a couple of lines of code. Ruby, on the other hand, is a kind of byzantine structure where everything is bolted on with C code and the language itself is rather inflexible.
I really like the idea in ES5 that classes are simply functions that return an object. Hooking up inheritance structure is a complete PITA, but conceptually the design is really clean. Even the idea that objects are simply hashes and that methods are simply functions in a hash is really nice. Even the weird this pointer is at least consistent (despite being practically useless).
Where ES5 gets its bad reputation is in type/data coercion (which it shouldn't do at all IMHO, and it certainly shouldn't do it the way it does it). It also has a truly awful standard library -- to the point where most experienced developers simply avoid it! My main other problem with ES5 is that it is overly verbose, but this is something I feel that is shared with Ruby in many ways.
IMHO, use of a transpiler is just a good idea with ES5 because while the core of the language is excellent, the stuff surrounding it is full of pitfalls. I personally like CoffeeScript quite a lot and honestly prefer writing CS to Ruby. Typescript seems like it is also quite nice, though I haven't used it. Lately I've been playing with Purescript and while it is legitimately a different language compiled into JS, I really enjoy reading the compiled JS output, because it often compiles into something very elegant.
Conclusion: Ruby is fine, but ES5 is just a lot more elegant internally and it is much easier for me to use it intelligently to produce nice code. Ruby has a much better standard library, but language features are bolted on without them being driven by an internal design. Basically, I think they think "Hey, this would be a convenient syntax. Let's write the C code to make that work." without really evaluating whether there is any internal consistency. Some people may actually consider that a plus, but I prefer simpler languages. Note that I feel that in many ways ES6 is wandering over in this direction and I am somewhat disappointed with it. I was happy you specified ES5 in your question, because a similar question about ES6 would have been harder for me to answer.