[ruby/irb] Revert "Memoize helper method instances with Singleton module"

This reverts commit https://github.com/ruby/irb/commit/169a9a2c3097.

https://github.com/ruby/irb/commit/221b0a4928
This commit is contained in:
Stan Lo 2024-04-24 17:01:14 +01:00 коммит произвёл git
Родитель e5ca3d072f
Коммит 9bba999be7
3 изменённых файлов: 4 добавлений и 33 удалений

Просмотреть файл

@ -1,10 +1,6 @@
require "singleton"
module IRB module IRB
module HelperMethod module HelperMethod
class Base class Base
include Singleton
class << self class << self
def description(description = nil) def description(description = nil)
@description = description if description @description = description if description

Просмотреть файл

@ -179,7 +179,7 @@ EOF
def self.install_helper_methods def self.install_helper_methods
HelperMethod.helper_methods.each do |name, helper_method_class| HelperMethod.helper_methods.each do |name, helper_method_class|
define_method name do |*args, **opts, &block| define_method name do |*args, **opts, &block|
helper_method_class.instance.execute(*args, **opts, &block) helper_method_class.new.execute(*args, **opts, &block)
end unless method_defined?(name) end unless method_defined?(name)
end end
end end

Просмотреть файл

@ -97,38 +97,13 @@ module TestIRB
RUBY RUBY
output = run_ruby_file do output = run_ruby_file do
type "my_helper" type <<~INPUT
my_helper
INPUT
type "exit" type "exit"
end end
assert_include(output, 'Hello from MyHelper') assert_include(output, 'Hello from MyHelper')
end end
def test_helper_method_instances_are_memoized
write_ruby <<~RUBY
require "irb/helper_method"
class MyHelper < IRB::HelperMethod::Base
description "This is a test helper"
def execute(val)
@val ||= val
end
end
IRB::HelperMethod.register(:my_helper, MyHelper)
binding.irb
RUBY
output = run_ruby_file do
type "my_helper(100)"
type "my_helper(200)"
type "exit"
end
assert_include(output, '=> 100')
assert_not_include(output, '=> 200')
end
end end
end end