【问题标题】:ruby introspection: how to ask ruby where a method is defined? [duplicate]ruby 内省:如何问ruby 方法定义在哪里? [复制]
【发布时间】:2018-01-01 21:00:00
【问题描述】:

我在 Rails 应用中有这样的课程

class User < ActiveRecord::Base
  ..
end

该类没有方法调用者 foo? 也没有任何include ... 文件。 但是 User.new.foo 呢?确实有响应,请问这个方法是在哪里定义的呢?

【问题讨论】:

标签: ruby-on-rails ruby metaprogramming introspection


【解决方案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) 

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 2012-03-14
    • 2012-05-06
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2014-01-21
    相关资源
    最近更新 更多