Найти исходное местоположение метода с псевдонимом - PullRequest
5 голосов
/ 10 мая 2019

у меня есть:

# 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 Ответ

2 голосов
/ 10 мая 2019

Я не верю, что есть способ добраться до места, где alias_method используется для определения метода; Я считаю, что под капотом на уровне C , они имеют одинаковое внутреннее представление метода. Мое понимание кода на C далеко не полное, поэтому я могу ошибаться.

Вместо этого вы можете использовать

def dangerously_output_as_html
  html_safe
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...