42

私が書いたとき、debuggerそれは始まりません:

NoMethodError: undefined method `run_init_script' for Debugger:Module
from /usr/local/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:239:in `debugger'
from (irb):4

実行するrake my:task --debuggerと、すぐにコンソールに戻ります。レーキタスクをデバッグするにはどうすればよいですか?

4

6 に答える 6

41

私は解決策を見つけました。

$ gem install ruby-debug
$ ruby-debug rake my:task

または一部のシステムでは

$ rdebug rake my:task
于 2010-04-18T21:07:45.167 に答える
27

Andrey Kouznetsovの答えは、Ruby1.9.3を使用している私にはうまくいきませんでした。ruby-debuggemはRuby1.9をサポートしていないようです。デバッガーgemを使用する必要がありました:https ://github.com/cldwalker/debugger 。

  1. gem 'debugger'Gemfileの開発グループに追加します。
  2. を実行しますbundle
  3. require 'debugger'私のレーキタスクの一番上に追加します。
  4. debuggerrakeタスクでブレークポイントが必要な場所への呼び出しを追加します。
  5. コマンドラインから通常どおりrakeタスクを実行します。例:rake my:task
于 2013-03-08T20:46:22.747 に答える
12

私はこれのためにこじ開けることを強くお勧めします

bundle install pry
require 'pry'
rake ...

rakeタスクファイル:

binding.pry 
于 2014-06-23T21:40:00.760 に答える
7

このアプローチは私にはうまくいきませんでした。これをコードに追加しました:

require 'ruby-debug'
# ... code ...
debugger
于 2011-06-29T20:58:00.413 に答える
3

Visual Studio Codeには、非常に優れたデバッガーが組み込まれています。誰かがこれをrakeで動作させる方法を探していることに気付いた場合、動作する構成は次のとおりです。

{
    "name": "Debug a rake task",
    "type": "Ruby",
    "request": "launch",
    "useBundler": true,
    "cwd": "${workspaceRoot}",
    "program": "/usr/local/bin/rake",
    "args": ["all"]
}

これにより、rakeタスクが実行されますall。パスをrakeに変更する必要があるかもしれませんが、PATHでパスを実行する方法が見つかりませんでした。

于 2016-10-22T07:31:40.183 に答える
1

ByeBugは2.0以降のもう1つのものです

https://github.com/deivid-rodriguez/byebug

于 2015-04-10T00:59:15.317 に答える