0

コードで「デバッガー」に到達したときに、Thor に IRB プロンプトをトリガーさせようとしています (Rails など)。デバッガーをトリガーすることはできますが、デバッガーがトリガーされたときに IRB を自動的に開始するにはどうすればよいですか?

現在、.thor ファイルで次のことを行っています。

require 'ruby-debug'

desc 'irb', 'Load IRB console for this app.'
def irb
  puts 'Starting IRB...'
  debugger
end

これにより、デバッガーがトリガーされますが、プロンプトで「irb」と入力して、IRB を明示的に開始する必要があります。

$ thor app
Starting IRB...
(rdb:1) irb
ruby-1.9.2-p180 :001 > puts 'hello'
hello
=> nil
ruby-1.9.2-p180 :002 > exit 
(rdb:1) exit
Really quit? (y/n) y

「irb」と余分な「exit」を入力する必要がないように、IRB を即座にトリガーするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

同じ質問があるかもしれない方のために、私は 2 つの解決策を見つけました ( http://bashdb.sourceforge.net/ruby-debug.html#Autoirbを参照)。


オプション 1: 「autoirb」をオンに設定します。(私の好み)

ローカルの .irbrc が自動的に含まれるように見えるので、これは便利です。欠点は、アプリの実行を終了する場合、「exit」を 2 回入力する必要があることです (1 回目は irb を終了し、2 回目はデバッガーを終了します)。

require 'ruby-debug'
::Debugger.settings[:autoirb] = 1

オプション 2: 「autoeval」をオンに設定します。

これは、デバッガーで不明なコマンドを自動評価し、技術的にはまだデバッガー コンソールにいる (ネストされた irb セッションではない) ため、'exit' を 1 回入力するだけで終了し、ステートメントは単に auto であるため、便利です。 -評価されました。欠点は、.irbrc 設定が無視されることです。Rails はこの方法を使用します (詳細: http://www.catapult-creative.com/2009/08/12/make-ruby-debug-work-better/ )。

require 'ruby-debug'
::Debugger.settings[:autoeval] = 1
于 2011-07-12T19:58:13.197 に答える