I use Ruby in a research lab for scientific computing, and in our case, most of our applications are definitely CPU bound. We end up re-writing many of them in C to speed them up and use threading but if we could keep them in Ruby while still using concurrency the faster development times would improve the lives of everyone in the lab.
Ruby is not Rails. I for one would benefit immensely from being able to run threaded Ruby code.
The easiest move might be to NumPy, assuming it can express your computations in its methods because if you're reduced to doing math in Python you're hardly any better off.
If you're willing to pay the price for Ruby there are certainly other viable options that aren't C. Learning the minimum Haskell to do decently fast math wouldn't be that hard and would not involve to much of the "weird stuff", for instance.
Much of our code is not CPU bound, and the PI is something of a Ruby evangelist. If everyone jumps away from Ruby it will never improve.
That being said, I don't think Ruby will ever be the fastest language, but speeding things up is always a good goal.
I'd highly suggest you consider JRuby + Mirah, or IronRuby + F#. F# especially with units is a really nice way to write your math intensive code. See F# vs. C on the Burrows Wheeler Transform.
Mirah has familar JRuby syntax but would be perfect for your scientific code as IIRC function calls are early-bound not late-bound.
http://www.mirah.org/