web-dev-qa-db-ja.com

irbからすべてのローカル変数または使用可能なメソッドを取得しますか?

Irbにアクセスして、存在しないコマンドを入力すると、次のようなエラーが発生します。

"undefined local variable or method 'my_method' for main:Object (NameError)"

利用できるローカル変数またはメソッドのリストを取得する方法はありますか?これは、Rubyの探索に非常に役立ちます。

23
George Mauer

カーネル、オブジェクト、モジュールでメソッドを探します:例: local_variablesinstance_methodsinstance_variables

そこに他の素晴らしい方法。 検査 は別のものです。

25
Zabba

素晴らしい答え。
あなたが探検するとき、あなたは自由にこれらを持っています:

obj.private_methods 
obj.public_methods 
obj.protected_methods 
obj.singleton_methods

そして

MyClass.private_instance_methods 
MyClass.protected_instance_methods 
MyClass.public_instance_methods

のような使用法:

obj.public_methods.sort

レビューも簡単になります。

いくつかの特別なケースが存在します

String.instance_methods(false).sort

...は、Stringクラスで定義されたインスタンスメソッドのみを提供し、祖先から継承したクラスは省略します。ご存知のとおり、詳細はこちらをご覧ください: http://www.Ruby-doc.org/docs/ProgrammingRuby/ しかし、irbを調べて反映するほど楽しいものではありません。

幸せな探検-

ペリー

16
Perry Horwich

インスタンス変数を見つけるには、Zabbaが指摘したようにKernel#instance_variablesを使用できます。

オブジェクトで使用できるメソッドの場合、my_object.methods - Object.methodsを使用して、オブジェクトで使用できる非自明なメソッドを見つけます。これによりリストが絞り込まれ、かなり読みやすくなります。

6
Swanand