我有:
# 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
谢谢。
答案 0 :(得分:2)
我不认为有一种方法可以到达使用alias_method
定义方法的位置;我相信under the hood at the C level,它们共享方法的相同内部表示。我对C代码的掌握还远远不够,所以我可能会误会。
相反,您可能会使用
def dangerously_output_as_html
html_safe
end