Использование метода # source_location
Отвечая на мой собственный вопрос намного позже, я могу, по крайней мере, подробно рассказать о том, как, как я сказал, «собрать воедино некоторые результаты с помощью самоанализа».
Один способполучите эту информацию, если вы можете определить, к какому объекту вызывается метод, то использовать Method#source_location
.
Например, если вы используете мой гем, Authority, вы будете вызывать методы вваши контроллеры вроде этого:
class WidgetsController < ActionController::Base
#...
authorize_actions_for Widget
#...
end
Глядя на этот код, становится ясно, что authorize_actions_for
является методом класса на WidgetsController
, но как он туда попал?Вы можете определить это из консоли Rails:
method = WidgetsController.method(:authorize_actions_for)
method.source_location
Это даст вам что-то вроде ["/Users/yourname/.rvm/gems/ruby-1.9.3-p125@yourproject/gems/authority-2.0.0/lib/authority/controller.rb", 27]
, что точно скажет вам, что это было определено в геме Authority.