Yes, there are numerous ways to do this, and besides gems you can directly manipulate with terminfo through gems for termios, ncurses or stty program.
tty_param = `stty -g`
system 'stty raw'
a = IO.read '/dev/stdin', 1
system "stty #{tty_param}"
print a