我正在尝试获取Rails代码库中定义的方法列表,不包括在超类中定义的任何内容或在运行时动态定义的内容。我尝试了instance_methods(false)
,但返回了大量的方法:
> User.instance_methods(false).length
=> 310
我猜这是因为Rails在运行时定义了一堆方法。有没有办法获得仅在我们的应用程序中的文件中定义的方法列表?希望有一种Ruby方式,而不仅仅是在所有文件中运行grep。类方法的奖励积分......
答案 0 :(得分:1)
User.instance_methods
也会显示所有继承的方法,所以你应该运行类似的东西
User.instance_methods - User.superclass.instance_methods
当你继承ActiveRecord::Base
类
答案 1 :(得分:0)
使用MyClass.instance_methods(false)
,但如果您不希望它返回超类中定义的方法,请确保将false
作为参数传递。
此外,对类方法使用MyClass.singleton_methods(false)
。
更多信息: