summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhogelog <[email protected]>2024-03-15 00:40:21 +0900
committergit <[email protected]>2024-03-14 15:40:27 +0000
commit3822ca9884e38bae0def0dc440df080ad16069ad (patch)
tree61c298c0e842a8ae2336c7ac2317a354956be669
parent83618f2cfa004accdd1514de7dcbba291aa7e831 (diff)
[ruby/irb] Add disable_irb command to disable debug of binding.irb
(https://github.com/ruby/irb/pull/898) * Add disable_irb command to disable debug of binding.irb * disable_irb doesn't override Kernel.exit Kernel.exit call is removed because disable_irb does not override Kernel.exit and workaround to https://bugs.ruby-lang.org/issues/18234 is not needed. https://github.com/ruby/irb/commit/29901e4f21
-rw-r--r--lib/irb/command.rb7
-rw-r--r--lib/irb/command/disable_irb.rb19
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/irb/command.rb b/lib/irb/command.rb
index 4dc2994ba9..ef93049237 100644
--- a/lib/irb/command.rb
+++ b/lib/irb/command.rb
@@ -196,7 +196,12 @@ module IRB # :nodoc:
:irb_history, :History, "command/history",
[:history, NO_OVERRIDE],
[:hist, NO_OVERRIDE],
- ]
+ ],
+
+ [
+ :irb_disable_irb, :DisableIrb, "command/disable_irb",
+ [:disable_irb, NO_OVERRIDE],
+ ],
]
diff --git a/lib/irb/command/disable_irb.rb b/lib/irb/command/disable_irb.rb
new file mode 100644
index 0000000000..0b00d0302b
--- /dev/null
+++ b/lib/irb/command/disable_irb.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module IRB
+ # :stopdoc:
+
+ module Command
+ class DisableIrb < Base
+ category "IRB"
+ description "Disable binding.irb."
+
+ def execute(*)
+ ::Binding.define_method(:irb) {}
+ IRB.irb_exit
+ end
+ end
+ end
+
+ # :startdoc:
+end