Ruby获取在codebase中定义的方法

时间:2014-01-28 02:57:35

标签: ruby-on-rails ruby

我正在尝试获取Rails代码库中定义的方法列表,不包括在超类中定义的任何内容或在运行时动态定义的内容。我尝试了instance_methods(false),但返回了大量的方法:

> User.instance_methods(false).length
=> 310

我猜这是因为Rails在运行时定义了一堆方法。有没有办法获得仅在我们的应用程序中的文件中定义的方法列表?希望有一种Ruby方式,而不仅仅是在所有文件中运行grep。类方法的奖励积分......

2 个答案:

答案 0 :(得分:1)

User.instance_methods也会显示所有继承的方法,所以你应该运行类似的东西

User.instance_methods - User.superclass.instance_methods

当你继承ActiveRecord::Base

时,它会认为会显示由AR生成的其他方法的大量内容

答案 1 :(得分:0)

使用MyClass.instance_methods(false),但如果您不希望它返回超类中定义的方法,请确保将false作为参数传递。

此外,对类方法使用MyClass.singleton_methods(false)

更多信息: