Last active
May 2, 2024 15:36
-
-
Save kyanny/227a6a5e54abf3a0db95b6160260dd5e to your computer and use it in GitHub Desktop.
Prevent "`winsize': Inappropriate ioctl for device (Errno::ENOTTY)" error with irb bundled with ruby 3.1.2 https://github.com/ruby/irb/pull/353
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
❯ ruby -v | |
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21] | |
❯ irb -v | |
irb 1.4.1 (2021-12-25) | |
❯ echo n=1 | irb | cat | |
Switch to inspect mode. | |
n=1 | |
/Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/input-method.rb:43:in `winsize': Inappropriate ioctl for device (Errno::ENOTTY) | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/input-method.rb:43:in `winsize' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:819:in `output_value' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:582:in `block (2 levels) in eval_input' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:770:in `signal_status' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:558:in `block in eval_input' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:268:in `block (2 levels) in each_top_level_statement' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:250:in `loop' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:250:in `block in each_top_level_statement' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:249:in `catch' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:249:in `each_top_level_statement' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:557:in `eval_input' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:491:in `block in run' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:490:in `catch' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:490:in `run' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:419:in `start' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/irb-1.4.1/exe/irb:11:in `<top (required)>' | |
from /Users/kyanny/.rbenv/versions/3.1.2/bin/irb:25:in `load' | |
from /Users/kyanny/.rbenv/versions/3.1.2/bin/irb:25:in `<main>' | |
Maybe IRB bug! | |
❯ echo n=1 | irb --echo-on-assignment | cat | |
Switch to inspect mode. | |
n=1 | |
1 | |
❯ echo 'IRB.conf[:ECHO_ON_ASSIGNMENT]=true; n=1' | irb | cat | |
Switch to inspect mode. | |
IRB.conf[:ECHO_ON_ASSIGNMENT]=true; n=1 | |
/Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/input-method.rb:43:in `winsize': Inappropriate ioctl for device (Errno::ENOTTY) | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/input-method.rb:43:in `winsize' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:819:in `output_value' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:582:in `block (2 levels) in eval_input' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:770:in `signal_status' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:558:in `block in eval_input' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:268:in `block (2 levels) in each_top_level_statement' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:250:in `loop' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:250:in `block in each_top_level_statement' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:249:in `catch' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb/ruby-lex.rb:249:in `each_top_level_statement' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:557:in `eval_input' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:491:in `block in run' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:490:in `catch' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:490:in `run' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/3.1.0/irb.rb:419:in `start' | |
from /Users/kyanny/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/irb-1.4.1/exe/irb:11:in `<top (required)>' | |
from /Users/kyanny/.rbenv/versions/3.1.2/bin/irb:25:in `load' | |
from /Users/kyanny/.rbenv/versions/3.1.2/bin/irb:25:in `<main>' | |
Maybe IRB bug! | |
❯ echo 'irb_context.echo_on_assignment=true; n=1' | irb | cat | |
Switch to inspect mode. | |
irb_context.echo_on_assignment=true; n=1 | |
1 | |
❯ echo 'IRB.CurrentContext.echo_on_assignment=true; n=1' | irb | cat | |
Switch to inspect mode. | |
IRB.CurrentContext.echo_on_assignment=true; n=1 | |
1 |
You saved me tens of hours of development. Thank you!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
See also ruby/irb@5af637b for about
IRB.conf[:ECHO_ON_ASSIGNMENT]
,irb_context.echo_on_assignment
, andIRB.CurrentContext.echo_on_assignment
.