зеркало из https://github.com/github/ruby.git
[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:
Родитель
e5ca3d072f
Коммит
9bba999be7
|
@ -1,10 +1,6 @@
|
|||
require "singleton"
|
||||
|
||||
module IRB
|
||||
module HelperMethod
|
||||
class Base
|
||||
include Singleton
|
||||
|
||||
class << self
|
||||
def description(description = nil)
|
||||
@description = description if description
|
||||
|
|
|
@ -179,7 +179,7 @@ EOF
|
|||
def self.install_helper_methods
|
||||
HelperMethod.helper_methods.each do |name, helper_method_class|
|
||||
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
|
||||
end
|
||||
|
|
|
@ -97,38 +97,13 @@ module TestIRB
|
|||
RUBY
|
||||
|
||||
output = run_ruby_file do
|
||||
type "my_helper"
|
||||
type <<~INPUT
|
||||
my_helper
|
||||
INPUT
|
||||
type "exit"
|
||||
end
|
||||
|
||||
assert_include(output, 'Hello from MyHelper')
|
||||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче