From: Run Paint Run Run <redmine@...>
Date: 2009-10-03T08:55:04+09:00
Subject: [ruby-core:25909] [Bug #2171] Kernel#respond_to_missing? Invoked for Unimplemented Methods

Bug #2171: Kernel#respond_to_missing? Invoked for Unimplemented Methods
http://redmine.ruby-lang.org/issues/show/2171

Author: Run Paint Run Run
Status: Open, Priority: Low
Category: core, Target version: 1.9.2
ruby -v: ruby 1.9.2dev (2009-10-01 trunk 25173) [i686-linux]

Kernel#respond_to_missing? is called for methods that raise NotImplementedError, despite such methods not invoking #method_missing. I expected it not to be.

  $ cat /tmp/notimp.rb
  [:method_missing, :respond_to_missing?].each do |m| 
    File.define_singleton_method(m, ->(_){ p m; false })
  end
  [:glark, :lchmod].each do |m|
    puts "<<#{m}>>"
    File.respond_to?(m)
    File.send(m)
  end

  $ ruby /tmp/notimp.rb
  <<glark>>
  :respond_to_missing?
  :method_missing
  <<lchmod>>
  :respond_to_missing?
  /tmp/notimp.rb:7:in `lchmod': lchmod() function is unimplemented on this machine   (NotImplementedError)
 	from /tmp/notimp.rb:7:in `block in <main>'
	from /tmp/notimp.rb:4:in `each'
	from /tmp/notimp.rb:4:in `<main>'


----------------------------------------
http://redmine.ruby-lang.org