0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

irb の TAB(補完)が死ぬ

Last updated at Posted at 2025-12-26

Ruby の irb は補完機能があって,たとえば「Array」と打ちたいとき,「Arr」くらいまで打って TAB を押せば「Array」になってくれる。

それが,この頃,TAB を押した瞬間にエラーを吐いて落ちるようになった。

補完したいものによって,期待どおり補完されたり落ちたりする。

以下の環境:

  • macOS 26.2 (25C56)
  • ruby 3.4.8 (2025-12-17 revision 995b59f666) +PRISM [arm64-darwin25]
  • forwardable-1.4.0
  • irb-1.16.0
  • rdoc-7.0.3
  • reline-0.6.3

Ruby 4.0.0 では起きなかった。

エラーメッセージ

<internal:marshal>:34:in 'Marshal.load': class RDoc::Markup::Heading not a struct (TypeError)
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/store.rb:982:in 'block in RDoc::Store#marshal_load'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/store.rb:982:in 'IO.open'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/store.rb:982:in 'RDoc::Store#marshal_load'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/store.rb:627:in 'RDoc::Store#load_class_data'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/store.rb:607:in 'RDoc::Store#load_class'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/ri/driver.rb:731:in 'block in RDoc::RI::Driver#classes_and_includes_and_extends_for'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/ri/driver.rb:729:in 'Array#map'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/rdoc-7.0.3/lib/rdoc/ri/driver.rb:729:in 'RDoc::RI::Driver#classes_and_includes_and_extends_for'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb/input-method.rb:380:in 'block in IRB::RelineInputMethod#show_doc_dialog_proc'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:636:in 'BasicObject#instance_exec'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:636:in 'Reline::LineEditor::DialogProcScope#call'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:671:in 'Reline::LineEditor::Dialog#call'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:704:in 'Reline::LineEditor#update_each_dialog'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:457:in 'block in Reline::LineEditor#update_dialogs'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:455:in 'Array#each'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:455:in 'Reline::LineEditor#update_dialogs'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/line_editor.rb:1001:in 'Reline::LineEditor#update'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:352:in 'block (3 levels) in Reline::Core#inner_readline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:342:in 'Array#each'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:342:in 'block (2 levels) in Reline::Core#inner_readline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:401:in 'block in Reline::Core#read_io'
	from <internal:kernel>:168:in 'Kernel#loop'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:380:in 'Reline::Core#read_io'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:341:in 'block in Reline::Core#inner_readline'
	from <internal:kernel>:168:in 'Kernel#loop'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:340:in 'Reline::Core#inner_readline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:257:in 'block (2 levels) in Reline::Core#readmultiline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/io/ansi.rb:110:in 'block in Reline::ANSI#with_raw_input'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/io/ansi.rb:110:in 'IO#raw'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline/io/ansi.rb:110:in 'Reline::ANSI#with_raw_input'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:256:in 'block in Reline::Core#readmultiline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:251:in 'Thread::Mutex#synchronize'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/reline-0.6.3/lib/reline.rb:251:in 'Reline::Core#readmultiline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/forwardable-1.4.0/lib/forwardable.rb:231:in 'Reline.readmultiline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb/input-method.rb:482:in 'IRB::RelineInputMethod#gets'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:226:in 'block in IRB::Irb#read_input'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:521:in 'IRB::Irb#signal_status'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:224:in 'IRB::Irb#read_input'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:269:in 'block in IRB::Irb#readmultiline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:581:in 'IRB::Irb#with_prompt_part_cached'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:264:in 'IRB::Irb#readmultiline'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:279:in 'block in IRB::Irb#each_top_level_statement'
	from <internal:kernel>:168:in 'Kernel#loop'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:278:in 'IRB::Irb#each_top_level_statement'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:193:in 'IRB::Irb#eval_input'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:174:in 'block in IRB::Irb#run'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:173:in 'Kernel#catch'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:173:in 'IRB::Irb#run'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/lib/irb.rb:54:in 'IRB.start'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/irb-1.16.0/exe/irb:9:in '<top (required)>'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/site_ruby/3.4.0/rubygems.rb:303:in 'Kernel#load'
	from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/site_ruby/3.4.0/rubygems.rb:303:in 'Gem.activate_and_load_bin_path'
	from /Users/XXXXX/.rbenv/versions/3.4.8/bin/irb:25:in '<main>'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?