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 方法定义在哪里? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

ruby 顶层定义的方法在哪里?

Ruby / Rails——从哪里包含一个方法? [复制]

Ruby网拍模特招新人啦~~

Ruby 的 have_header 方法在哪里查找头文件?

如何在Ruby中定义一个参数没有类型的方法[关闭]

Ruby 如何知道在哪里可以找到所需的文件?