Code to reproduce:
IO.console # #<File:/dev/tty>
IO.console
NoMethodError: undefined method `open?' for #<File:/dev/tty>
from /Users/davida/.rvm/rubies/jruby-9.0.4.0/lib/ruby/stdlib/io/console.rb:159:in `console'
from (irb):2:in `<eval>'
In order to use the console returned by IO.console you have to store a reference to it:
# Explodes
IO.console.winsize # [60, 120]
IO.console.winsize
# Works
c = IO.console
c.winsize # [60, 120]
# Also works
IO.console
IO.instance_variable_get(:@console).winsize