Is there a way to catch SIGINT during an early rubygems startup?
I have a bash script that creates many Ruby child processes, and when I hit Ctrl-C, those children almost always dump a backtrace that has no relation to my code.
This can be simulated by the following one-liner:
$ while true; do ruby -e 'trap("INT") { exit 11 }'; echo $?; done
0
0
^C<internal:dir>:412:in `glob': Interrupt
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/util.rb:104:in `glob_files_in_dir'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:776:in `block in each_gemspec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:775:in `each'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:775:in `each_gemspec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:787:in `each_spec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:841:in `load_defaults'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems.rb:1374:in `<top (required)>'
from <internal:gem_prelude>:2:in `require'
from <internal:gem_prelude>:2:in `<internal:gem_prelude>'
1
0
0
^C/home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems.rb:1219:in `sub': Interrupt
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems.rb:1219:in `block in register_default_spec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems.rb:1210:in `each'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems.rb:1210:in `register_default_spec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:844:in `block in load_defaults'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:789:in `block in each_spec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:777:in `block (2 levels) in each_gemspec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:776:in `each'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:776:in `block in each_gemspec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:775:in `each'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:775:in `each_gemspec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:787:in `each_spec'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/specification.rb:841:in `load_defaults'
from /home/alex/.rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems.rb:1374:in `<top (required)>'
from <internal:gem_prelude>:2:in `require'
from <internal:gem_prelude>:2:in `<internal:gem_prelude>'
1
0
^C
Here I quickly pressed Ctrl-C 3 times.