ruby 内省:如何问ruby 方法定义在哪里? [复制]
Posted
技术标签:
【中文标题】ruby 内省:如何问ruby 方法定义在哪里? [复制]【英文标题】:ruby introspection: how to ask ruby where a method is defined? [duplicate] 【发布时间】:2018-01-01 21:00:00 【问题描述】:我在 Rails 应用中有这样的课程
class User < ActiveRecord::Base
..
end
该类没有方法调用者 foo?
也没有任何include ...
文件。
但是 User.new.foo 呢?确实有响应,请问这个方法是在哪里定义的呢?
【问题讨论】:
哎呀我想它在这里***.com/questions/175655/… 来自您提供的链接:User.new.method(:foo?).owner
【参考方案1】:
(byebug) User.last.method(:foo?)
#<Method: User(#<Module:0x007fd4c0a03da8>)#foo?>
(byebug) User.last.method(:foo?).source_location
["/Users/user1/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-4.2.7/lib/active_record/enum.rb", 122]
(byebug)
【讨论】:
以上是关于ruby 内省:如何问ruby 方法定义在哪里? [复制]的主要内容,如果未能解决你的问题,请参考以下文章