По моему скромному мнению, рубин не был создан для таких задач. Если вам приходится много писать в двоичные файлы, было бы проще написать для этого некоторые функции c и вызывать их из ruby, что довольно просто с помощью swig. Сейчас я делаю то же самое, чтобы написать симулятор рейда.