mirror of
https://github.com/thoughtbot/factory_bot.git
synced 2022-11-09 11:43:51 -05:00
![Geoff Hubbard](/assets/img/avatar_default.png)
NullObject inherits from BasicObject. BasicObject does not implement respond_to? or respond_to_missing? Since we're inheriting from BasicObject we don't implement respond_to and respond_to_missing? in the same way as we would if we were inheriting from Object Since respond_to_missing? will never be called, we can delete the unused code. In order to stop Rubocop complaining about this we need to disable the Style/MissingRespondToMissing cop. References: https://ruby-doc.org/core-2.7.1/BasicObject.html
20 lines
483 B
Ruby
20 lines
483 B
Ruby
module FactoryBot
|
|
# @api private
|
|
class NullObject < ::BasicObject
|
|
def initialize(methods_to_respond_to)
|
|
@methods_to_respond_to = methods_to_respond_to.map(&:to_s)
|
|
end
|
|
|
|
def method_missing(name, *args, &block) # rubocop:disable Style/MissingRespondToMissing
|
|
if respond_to?(name)
|
|
nil
|
|
else
|
|
super
|
|
end
|
|
end
|
|
|
|
def respond_to?(method, _include_private = false)
|
|
@methods_to_respond_to.include? method.to_s
|
|
end
|
|
end
|
|
end
|