为什么`send`在Ruby 2.0改进时失败了?

Sea*_*sey 9 ruby ruby-2.0

为什么这不起作用?

module StringRefinement
  refine String do
    def bar
      length
    end
  end
end

using StringRefinement
"abcdefghijklmnopqrstuvwxyz".send(:bar)
#NoMethodError: undefined method 'bar' for "abcdefghijklmnopqrstuvwxyz":String
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么send在这里不起作用?有没有办法动态调用细化中定义的方法?我似乎无法找到关于改进如何在Ruby 2.0中工作的完整解释.

Jör*_*tag 9

因为规范如此说:

间接方法访问

任何间接的方法访问,例如Kernel#send,Kernel#methodKernel#respond_to?不得方法查找期间的荣誉,在主叫方面的改进.