查找别名方法的源位置

时间:2019-05-10 02:59:39

标签: ruby-on-rails ruby

我有:

# lib/freedom_patches/html_safe.rb
class String
  alias_method :dangerously_output_as_html, :html_safe
end

可以在代码库中搜索方法名称dangerously_output_as_html,但想知道是否有一种编程方式可以找到该别名在哪里?

"".method(:dangerously_output_as_html).source_location

将我带到html_safe位置:

activesupport/lib/active_support/core_ext/string/output_safety.rb

而不是猴子补丁所在的位置

lib/freedom_patches/html_safe.rb

谢谢。

1 个答案:

答案 0 :(得分:2)

我不认为有一种方法可以到达使用alias_method定义方法的位置;我相信under the hood at the C level,它们共享方法的相同内部表示。我对C代码的掌握还远远不够,所以我可能会误会。

相反,您可能会使用

def dangerously_output_as_html
  html_safe
end