Si lo que buscas es enviar directamente caracteres a la impresora puedes hacer una escritura en el "LPT1" osea envías directamente los caracteres formateados a través del puerto LPT1.
Es igual a escribir en un archivo caracteres pero apuntando al nombre del puerto de la conexion paralelo, podes usar "File" o FileUtils habría que probar.
Si la impresora es usb podes simular este puerto usando estos comandos en windows
NET USE LPT1: \\[Maquina]\ImpresoraA /PERSISTENT:YES
Ahora es importante que compartas dicha impresora desde el sistema.
Si la impresora es del tipo de conexión paralelo no es necesario hacer esta configuración.
Esta configuración la harías desde el sistema operativo desde el cual se ejecuta el servidor.
Otra solución que he implementado en sistemas de producción con bastante éxito es usar jruby y internamente crear una implementacion para imprimir directamente usando el pool de impresiones del sistema y diseñar los reportes en JasperReports, es un tanto complejo pero te aseguro que tengo buenos resultados, incluso para imprimir directamente desde impresoras fiscales.
Otra alternativa es usar modo "kiosk mode" y imprimir directamente desde un navegador, conlleva otro tipo de approach pues es implementar web que depende de tener control directo de las maquinas clientes que usaran tu software y tendrás que escribir javascript exponiendo la logica de impresion a el usuario (inseguro).
Preguntas
Porque tiene que ser en ruby, algun motivo en especial?
Usaras algún framework especifico, sera script, desktop o web?
Espero haber podido ayudarte con estos comentarios.
Saludos