Because of the GIL, Ruby threads will be run sequentially, within a single process, even thought they appear to be parallel. So, if a part of a program blocks the process, your CPU is being under-utilised.
Erlang, on the other hand, has a preemptive scheduler that is capable of keeping all cores hot.