@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Rubyのrefinementsを使ってrespond_to?メソッドが定義できない現象にあった。最小コードでは再現しない

ruby.wasm用のコードを書いている最中に、Rubyのrefinementsを使ってrespond_to?メソッドが定義できない現象に出会いました。 念のため以下の最小コードで試してみます。

class Hoge < BasicObject; end

module Fuga
  refine Hoge do
    define_method(:respond_to?, ::Object.instance_method(:respond_to?))
  end
end

using Fuga
hoge = Hoge.new
p hoge.respond_to? :boo
ruby hoge.rb
false

期待通りに動いています。 「定義できない方の条件を載せろよ」て思いますよね・・・。