Rails' biggest problem is that it isn't JavaScript, and thus code is not portable between client and server.
The GIL in CRuby means you need one process per core but that's also true of NodeJS.
Processes and threads aren't as different as you think. Linux pthreads are "just" processes which are allowed to write into the same memory. PostgreSQL remains process based to the day, although it does give them a little pain.
I've been using Node.js/React together for a while, and I haven't found code reuse across client and server to be as important as I initially thought. The only code that I've tended to share is validation and a handful of utilities, which are a tiny proportion of the total, and even for those the business rules aren't always the same.
I've also found it useful to have TypeScript on client and server to be able to share types between them.
Also, when using React, Node on your server makes server-side rendering a lot easier.