it-swarm.com.de

Ruby on Rails: Debuggen von Rechenaufgaben

Wenn ich debugger schreibe, startet es nicht:

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

Wenn ich rake my:task --debugger starte, kehrt ich sofort zur Konsole zurück. Wie ist es möglich, Rechenaufgaben zu debuggen?

40

Die Antwort von Andrey Kouznetsov funktionierte bei mir mit Ruby 1.9.3 nicht. Der Ruby-Debug-Edelstein scheint Ruby 1.9 nicht zu unterstützen. Ich musste den Debugger gem verwenden: https://github.com/cldwalker/debugger .

  1. Fügen Sie gem 'debugger' zur Entwicklungsgruppe meines Gemfile hinzu.
  2. Führen Sie bundle aus.
  3. Füge require 'debugger' am Anfang meiner Rake-Aufgabe hinzu.
  4. Füge einen Aufruf zu debugger hinzu, wo ich einen Haltepunkt in meiner Rake-Aufgabe haben wollte.
  5. Führen Sie die Rake-Task normal von der Befehlszeile aus, z. B. rake my:task.
26
Liron Yahdav

Ich habe die Lösung gefunden.

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

oder auf einigen Systemen

$ rdebug rake my:task
40

Ich empfehle pry dafür 

bundle install pry
require 'pry'
rake ...

In Ihrer Rake Task Datei:

binding.pry 
9
Abram

Dieser Ansatz hat für mich nicht funktioniert. Ich habe das gerade in meinen Code eingefügt:

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

Visual Studio Code hat einen ziemlich guten Debugger, eingebaut. Wenn jemand findet, dass dies nach einem Weg sucht, um mit Rake arbeiten zu können, ist hier eine funktionierende Konfiguration:

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

Dies würde die Rake-Task all ausführen. Möglicherweise müssen Sie den Pfad zum Rake ändern. Ich habe keinen Weg gefunden, den Pfad in PATH auszuführen.

1
MattW.

ByeBug ist ein weiterer für 2.0+

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

1
Cody Moniz