Я думаю, вы можете делать многое из того, что хотите, используя возможности Ruby IO; вы разделяете процессы, а не потоки, правильно?
Если это так, IO.pipe сделает то, что вам нужно. В Ruby нет встроенного способа обработки межпроцессных очередей (насколько мне известно), но вы также можете использовать FIFO (если вы используете Unix).
Если вы хотите что-то более детальное и с хорошей поддержкой потоков, я вполне уверен, что вы можете использовать java.util.concurrent при использовании JRuby. MRI имеет довольно паршивую поддержку многопоточности / параллелизма, так что если это то, к чему вы стремитесь, JRuby, вероятно, является лучшим местом для поиска.