提交 c7ee2446 编写于 作者: R Rafael França 提交者: GitHub

Merge pull request #28831 from kamipo/respond_to_missing_should_be_private

`respond_to_missing?` should be private
......@@ -326,11 +326,11 @@ def nil?
def ref; end
def respond_to_missing?(method, include_private = false)
method.to_s.ends_with? "?"
end
private
def respond_to_missing?(method, _)
method.to_s.ends_with? "?"
end
def method_missing(method, *args)
false if method.to_s.ends_with? "?"
end
......
......@@ -19,7 +19,8 @@ def url_options
end
end
def respond_to_missing?(method, include_private = false)
private
def respond_to_missing?(method, _)
super || @helpers.respond_to?(method)
end
......@@ -32,7 +33,7 @@ def #{method}(*args)
@helpers.#{method}(*args)
end
RUBY
send(method, *args)
public_send(method, *args)
else
super
end
......
......@@ -385,14 +385,15 @@ def default_url_options=(options)
integration_session.default_url_options = options
end
def respond_to_missing?(method, include_private = false)
integration_session.respond_to?(method, include_private) || super
private
def respond_to_missing?(method, _)
integration_session.respond_to?(method) || super
end
# Delegate unhandled messages to the current session instance.
def method_missing(sym, *args, &block)
if integration_session.respond_to?(sym)
integration_session.__send__(sym, *args, &block).tap do
def method_missing(method, *args, &block)
if integration_session.respond_to?(method)
integration_session.public_send(method, *args, &block).tap do
copy_session_variables!
end
else
......
module ActiveRecord
module DynamicMatchers #:nodoc:
def respond_to_missing?(name, include_private = false)
if self == Base
super
else
match = Method.match(self, name)
match && match.valid? || super
end
end
private
def respond_to_missing?(name, _)
if self == Base
super
else
match = Method.match(self, name)
match && match.valid? || super
end
end
def method_missing(name, *arguments, &block)
match = Method.match(self, name)
......
......@@ -92,10 +92,6 @@ def inverse_of(command, args, &block)
send(method, args, &block)
end
def respond_to_missing?(*args) # :nodoc:
super || delegate.respond_to?(*args)
end
ReversibleAndIrreversibleMethods.each do |method|
class_eval <<-EOV, __FILE__, __LINE__ + 1
def #{method}(*args, &block) # def create_table(*args, &block)
......@@ -225,10 +221,14 @@ def invert_remove_foreign_key(args)
[:add_foreign_key, reversed_args]
end
def respond_to_missing?(method, _)
super || delegate.respond_to?(method)
end
# Forwards any missing method call to the \target.
def method_missing(method, *args, &block)
if @delegate.respond_to?(method)
@delegate.send(method, *args, &block)
if delegate.respond_to?(method)
delegate.public_send(method, *args, &block)
else
super
end
......
......@@ -109,12 +109,10 @@ def relation_class_for(klass)
end
end
def respond_to_missing?(method, include_private = false)
super || @klass.respond_to?(method, include_private) ||
arel.respond_to?(method, include_private)
end
private
def respond_to_missing?(method, _)
super || @klass.respond_to?(method) || arel.respond_to?(method)
end
def method_missing(method, *args, &block)
if @klass.respond_to?(method)
......
......@@ -2040,7 +2040,6 @@ def test_sending_new_to_association_proxy_should_have_same_effect_as_calling_new
def test_respond_to_private_class_methods
client_association = companies(:first_firm).clients
assert !client_association.respond_to?(:private_method)
assert client_association.respond_to?(:private_method, true)
end
def test_creating_using_primary_key
......
......@@ -594,7 +594,7 @@ def test_scoped_responds_to_delegated_methods
end
end
def test_respond_to_delegates_to_relation
def test_respond_to_delegates_to_arel
relation = Topic.all
fake_arel = Struct.new(:responds) {
def respond_to?(method, access = false)
......@@ -607,10 +607,6 @@ def respond_to?(method, access = false)
relation.respond_to?(:matching_attributes)
assert_equal [:matching_attributes, false], fake_arel.responds.first
fake_arel.responds = []
relation.respond_to?(:matching_attributes, true)
assert_equal [:matching_attributes, true], fake_arel.responds.first
end
def test_respond_to_dynamic_finders
......
......@@ -305,10 +305,6 @@ def as_json(options = nil) #:nodoc:
to_i
end
def respond_to_missing?(method, include_private = false) #:nodoc:
@value.respond_to?(method, include_private)
end
# Build ISO 8601 Duration string for this duration.
# The +precision+ parameter can be used to limit seconds' precision of duration.
def iso8601(precision: nil)
......@@ -335,8 +331,12 @@ def sum(sign, time = ::Time.current)
end
end
def respond_to_missing?(method, _)
value.respond_to?(method)
end
def method_missing(method, *args, &block)
value.send(method, *args, &block)
value.public_send(method, *args, &block)
end
def raise_type_error(other)
......
......@@ -162,10 +162,6 @@ def instance
@instance ||= new
end
def respond_to_missing?(*args)
instance.respond_to?(*args) || super
end
# Allows you to configure the railtie. This is the same method seen in
# Railtie::Configurable, but this module is no longer required for all
# subclasses of Railtie so we provide the class method here.
......@@ -178,6 +174,10 @@ def generate_railtie_name(string)
ActiveSupport::Inflector.underscore(string).tr("/", "_")
end
def respond_to_missing?(name, _)
instance.respond_to?(name) || super
end
# If the class method does not have a method, then send the method call
# to the Railtie instance.
def method_missing(name, *args, &block)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册