web-dev-qa-db-ja.com

Ruby on Rails:rakeタスクのデバッグ

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、すぐにコンソールに戻ります。どうすればrakeタスクをデバッグできますか?

41

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

  1. Gemfileの開発グループにgem 'debugger'を追加します。
  2. bundleを実行します。
  3. Rakeタスクの先頭にrequire 'debugger'を追加します。
  4. debuggerへの呼び出しを追加します。rakeタスクにブレークポイントが必要です。
  5. 通常はコマンドラインからRakeタスクを実行します(例:rake my:task)。
26
Liron Yahdav

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

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

または一部のシステム

$ rdebug rake my:task
40

pry を強くお勧めします

bundle install pry
require 'pry'
rake ...

rake taskファイルで:

binding.pry 
9
Abram

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

require 'Ruby-debug'
# ... code ...
debugger
6
Sean McCleary

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でパスを実行する方法が見つかりませんでした。

2

ByeBugは2.0以上の別のバグです

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

1
Cody Moniz