From: danieldasilvaferreira@... Date: 2016-05-12T10:25:37+00:00 Subject: [ruby-core:75471] [Ruby trunk Bug#12370] require 'mkmf' changes Object#respond_to? behaviour Issue #12370 has been updated by Daniel Ferreira. Hi Nobu. I discovered due to this bug in capybara-screenshot gem: [[https://github.com/mattheworiordan/capybara-screenshot/issues/162]] And your right. I also think they should not use ``` ruby require 'mkmf' ``` But when I say that Object#respond_to? behaviour was changed it is because of this: ``` ruby > YAML.respond_to?(:configuration) => true > YAML.public_method_defined?(:configuration) => false ``` When the definition of Object#respond_to? is that it will be true if public method exists. So the behaviour is different for some reason. For me that is a bug or we need to update the definition of the method itself. Do you agree with me? ---------------------------------------- Bug #12370: require 'mkmf' changes Object#respond_to? behaviour https://bugs.ruby-lang.org/issues/12370#change-58592 * Author: Daniel Ferreira * Status: Open * Priority: Normal * Assignee: * ruby -v: 2.3.0 * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Replication steps: ``` ruby $ irb > RUBY_VERSION => '2.3.0' > require 'yaml' > YAML.public_method_defined?(:configuration) => false > YAML.respond_to?(:configuration) => false > require 'mkmf' > YAML.public_method_defined?(:configuration) => false > YAML.respond_to?(:configuration) => true ``` ``` ruby Object.constants do |constant| constant.respond_to?(:configuration) ==> true end ``` Also there is a different behaviour for core classes over library or gem classes and/or modules under Object namespace. The changed behaviour is triggered by: mkmf.rb:2718 => ``` ruby include MakeMakefile ``` -- https://bugs.ruby-lang.org/ Unsubscribe: