Ich versuche, den Ruby-Debugger in einer meiner Spezifikationen zum Laufen zu bringen:
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
Wenn ich rspec starte, bekomme ich:
debugger statement ignored, use -d or --debug option to enable debugging
Ich habe folgendes versucht:
rake spec --debug
rake spec --debug --trace
rake spec:models --debug
bundle exec rspec --debug
bundle exec rspec --debug spec/models/
bundle exec rspec --d spec/models/
bundle exec "rspec --debug" spec/models/
bundle exec rspec --debugger spec/models/
bundle exec --debugger rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle exec --debugger rspec spec/models/
bundle exec rspec --debugger spec/models/
Irgendwelche Ideen, wie man rspec richtig ausführt? Ich bin auf Rails 3.0.5, Ruby 1.9.2, RSpec 2.5.1, Ruby-Debug19.
Danke, Justin.
ruby-on-rails
rspec
rake
ruby-debug
Allylisocyanat
quelle
quelle
Antworten:
Sie erhalten, was Sie wollen, indem Sie
require 'ruby-debug'
oben in Ihre Spezifikation aufnehmen:# spec/models/user_spec.rb require 'spec_helper' require 'ruby-debug' describe User do it "should be valid" do debugger User.new.should be_valid end end
Sie würden dann laufen
rake spec
oderrspec
wie gewohntHINWEIS: Ich bevorzuge jetzt Ruby 2.0+ und heble. Es ist so ziemlich der gleiche Prozess:
require 'spec_helper' require 'pry-debugger' describe User do it "should be valid" do binding.pry expect(User.new).to be_valid end end
Außerdem füge ich im Allgemeinen Anforderungen wie diese in meine Datei spec_helper ein, damit der Pry-Debugger für alle meine Spezifikationen verfügbar ist.
quelle
"pry-rails"
und"pry-byebug"
so würde ichrequire 'pry-rails'
. Auch in der Gemfile müssen sie in dietest environment
Sie können eine
.rspec
Konfigurationsdatei im Stammverzeichnis Ihres Projekts erstellen und die folgende Zeile einfügen:quelle
invalid option: --debug (defined in ./.rspec)
Für Ruby> = 1.9.2
Sie sollten das Debugger- Juwel anstelle von ruby-debug19 installieren. Es Sie verwenden Bündler , setzen Sie diese einfach in Ihre Gemfile:
group :test do gem "debugger" end
Danach können Sie einfach setzen
rspec <3.0
rspec> = 3,0
in Ihrer
.rspec
DateiDann kannst du einfach rennen
ohne zusätzliche Argumente. Sie müssen auch Ihren Quellcode nicht ändern (nicht einmal Ihren Testquellcode).
quelle
debugger
Anweisung hinzu). Wenn Sie Ihren Test mit Spork ausführen, wird in der Spork-Konsole die Eingabeaufforderung rdb angezeigt, die nicht Ihre Eingabe wiedergibt. Scheint am einfachsten ohne Spork auszuführen.Für Ruby 2.0 verwende ich byebug: https://github.com/deivid-rodriguez/byebug
gem 'byebug'
Code:
# spec/models/user_spec.rb require 'spec_helper' require 'byebug' describe User do it "should be valid" do byebug User.new.should be_valid end end
quelle
byebug
versuchen hinzuzufügendebugger
?Der beste Weg, den ich zum Debuggen in rSpec gefunden habe, besteht darin, Ihrer Datei 'spec_helper.rb' Folgendes hinzuzufügen
def logger Rails.logger end
Sie können dann auf alle Protokollierungsmethoden in Ihren rSpec-Dateien zugreifen und beispielsweise die Tag-Protokollierung einbeziehen. Dies gilt natürlich für Rails 3 und höher. Wenn Sie vor Rails 3 etwas haben, fügen Sie stattdessen Folgendes hinzu:
def logger RAILS_DEFAULT_LOGGER end
Sobald Sie Ihre Protokollierungsanweisungen eingerichtet haben, können Sie eingeben
in Ihrer Terminal-Shell, um Ihre Protokollierungsanweisungen zu überwachen, während die Tests ausgeführt werden.
Natürlich würden Sie in Ihrem eigentlichen rspec-Test etwas wie eingeben
logger.debug "#{1.class}" # => Fixnum
Wenn Sie Ihre Debug-Anweisungen aus dem Rest Ihres Testprotokolls filtern möchten, stellen Sie Ihrer Debug-Anweisung einfach eine zufällige Zeichenfolge voran und leiten Sie die Ausgabe des Befehls tail an grep weiter.
Beispiel:
logger.debug "random_string #{1.class}" # => Fixnum tail -f log/test.log | grep random_string
Aktualisieren
Ich habe meine Meinung dazu geändert. Sie sollten pry, pry-doc und pry-debug, pry-debugger und pry-rail installieren. Verwenden Sie dann binding.pry in Ihrem Code, um eine interaktive Debugger-Konsole zu öffnen, die die Welt regiert!
quelle
logger.debug "#{1.class}"
Wenn Sie möchten, können Sie Ihrer Debug-Anweisung eine zufällige Zeichenfolge voranstellen und die Ausgabe des Befehls tail an grep weiterleiten, um Ihre Debug-Anweisungen zu filtern .Die beste und sauberste Option ist die Verwendung
--require
in Ihrer.rspec
Datei. Was Sie setzen, hängt davon ab, welchen Edelstein Sie zum Debuggen verwenden.--color --require pry --require rails_helper
Diese entsprechen den Befehlszeilenoptionen (-d oder --debug ist jetzt veraltet).
Fühlen Sie sich frei zu verwenden
debugger
,ruby-debug
oderpry
(Hebelschienen in Ihrem Gemfile).Für Ihr Gemfile:
group :test, :development do gem 'pry-rails' end
Das Platzieren von
require 'ruby-debug'
etc. an der Spitze Ihrer Spezifikation ist einfach enger gekoppelt - zumal der am besten bewertete Kommentar hier vorschlägt, es einzeln in ALLE Ihre Dateien zu setzen. Mit der neuen.rspec
Datei sollten Sie Ihre Dateien nicht mehr obenrequire 'spec_helper'
oderrequire 'rails_helper'
oben platzieren müssen.Sie sind als implizite Befehlszeilenargumente sinnvoller.
quelle