mirror of https://github.com/rails/rails
Merge pull request #28831 from kamipo/respond_to_missing_should_be_private
`respond_to_missing?` should be private
This commit is contained in:
commit
c7ee244644
|
@ -326,11 +326,11 @@ module Mime
|
|||
|
||||
def ref; end
|
||||
|
||||
def respond_to_missing?(method, include_private = false)
|
||||
private
|
||||
def respond_to_missing?(method, _)
|
||||
method.to_s.ends_with? "?"
|
||||
end
|
||||
|
||||
private
|
||||
def method_missing(method, *args)
|
||||
false if method.to_s.ends_with? "?"
|
||||
end
|
||||
|
|
|
@ -19,7 +19,8 @@ module ActionDispatch
|
|||
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 @@ module ActionDispatch
|
|||
@helpers.#{method}(*args)
|
||||
end
|
||||
RUBY
|
||||
send(method, *args)
|
||||
public_send(method, *args)
|
||||
else
|
||||
super
|
||||
end
|
||||
|
|
|
@ -385,14 +385,15 @@ module ActionDispatch
|
|||
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
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module ActiveRecord
|
||||
module DynamicMatchers #:nodoc:
|
||||
def respond_to_missing?(name, include_private = false)
|
||||
private
|
||||
def respond_to_missing?(name, _)
|
||||
if self == Base
|
||||
super
|
||||
else
|
||||
|
@ -9,8 +10,6 @@ module ActiveRecord
|
|||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def method_missing(name, *arguments, &block)
|
||||
match = Method.match(self, name)
|
||||
|
||||
|
|
|
@ -92,10 +92,6 @@ module ActiveRecord
|
|||
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 @@ module ActiveRecord
|
|||
[: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 @@ module ActiveRecord
|
|||
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 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|||
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 @@ class RelationTest < ActiveRecord::TestCase
|
|||
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 @@ class RelationTest < ActiveRecord::TestCase
|
|||
|
||||
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 @@ module ActiveSupport
|
|||
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 @@ module ActiveSupport
|
|||
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 @@ module Rails
|
|||
@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 @@ module Rails
|
|||
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)
|
||||
|
|
Loading…
Reference in New Issue