2017-04-12 3 views
2

私は、オーバーロードメソッドを持つRubyコードのラインを持っています。私は、回線の呼び出しスタックを表示したい。 callerまたはbyebugの場所がわかりません。実行後の行の現在の呼び出しスタックを表示し、デバッグの場所を探したいとします。どうしたらいいですか?約caller Test.methodのような、その後ルビーコード "around"呼び出しスタック

from /var/lib/gems/2.3.0/gems/railties-4.2.3/lib/rails/commands/console.rb:110:in `start' 
    from /var/lib/gems/2.3.0/gems/railties-4.2.3/lib/rails/commands/console.rb:9:in `start' 
    from /var/lib/gems/2.3.0/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:68:in `console' 
    from /var/lib/gems/2.3.0/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /var/lib/gems/2.3.0/gems/railties-4.2.3/lib/rails/commands.rb:17:in `<top (required)>' 
+0

こんにちは、ないで

別の詳細を行くことができますあなたのコードを確認してください。コールスタックを出力する例外を発生させようとすることができます。 – suhao399

答えて

2

それはまさにそのようではないのですが、それは非常に似ています。

メソッドmethodを使用できます。例えば

2.method(:hours) 
=> #<Method: Fixnum(Numeric)#hours> 

またはおそらくより詳細

2.method(:hours).source_location 
=> ["~/.rvm/gems/ruby-2.3.3/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/time.rb", 29] 

その後、あなたはdebugerを使う(かのう場合)またはより深くこの回答How to find where a method is defined at runtime?

関連する問題