Как найти, где метод определен во время выполнения?
На самом деле вы можете пойти definition немного дальше, чем описанное ror выше решение. Для Ruby 1.8 definition Enterprise Edition в экземплярах method Method
есть методы __file__
и __line__
:
require 'rubygems'
require 'activesupport'
m = 2.days.method(:ago)
# => #
m.__file__
# => "/Users/james/.rvm/gems/ree-1.8.7-2010.01/gems/activesupport-2.3.8/lib/active_support/core_ext/numeric/time.rb"
m.__line__
# => 64
Для Ruby rails 1.9 и более поздних версий definitions существует source_location
(спасибо, Джонатан!):
require 'active_support/all'
m = 2.days.method(:ago)
# => # # comes from the Numeric module
m.source_location # show file and line
# => ["/var/lib/gems/1.9.1/gems/activesupport-3.0.6/.../numeric/time.rb", 63]
ruby-on-rails
ruby
runtime
methods
definition
2021-12-06T05:35:11+00:00
2022-10-29T05:49:52+00:00
Secator
Вопросы с похожей тематикой, как у вопроса:
Как найти, где метод определен во время выполнения?
Предупреждение о файлах Cookies
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.