Exécuter le débogage Ruby dans rspec?

J’essaie de faire fonctionner le débogueur Ruby dans l’une de mes spécifications:

describe User do it "should be valid" do debugger User.new.should be_valid end end 

Quand je lance rspec cependant, j’obtiens:

 debugger statement ignored, use -d or --debug option to enable debugging 

J’ai essayé ce qui suit:

 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/ 

Des idées sur la façon d’exécuter rspec de la bonne façon? Je suis sur Rails 3.0.5, Ruby 1.9.2, RSpec 2.5.1, ruby-debug19.

Merci Justin.

    Vous obtiendrez ce que vous voulez en incluant la commande require 'ruby-debug' en haut de vos spécifications:

     # 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 

    Vous devriez alors exécuter la rake spec ou rspec normalement

    NOTE: Je préfère maintenant Ruby 2.0+ et pry. C’est à peu près le même processus:

     require 'spec_helper' require 'pry-debugger' describe User do it "should be valid" do binding.pry expect(User.new).to be_valid end end 

    En outre, je mets généralement les exigences comme ceci dans mon fichier spec_helper, de sorte que pry-debugger soit disponible pour toutes mes spécifications.

    Vous pouvez créer un fichier de configuration .rspec à la racine de votre projet et inclure la ligne:

     --debug 

    Pour Ruby> = 1.9.2

    Vous devez installer le gem de débogueur au lieu de ruby-debug19. Si vous utilisez bundler , vous venez de mettre ceci dans votre Gemfile:

     group :test do gem "debugger" end 

    Après cela, vous pouvez simplement mettre

    rspec <3.0

     --debug 

    rspec> = 3.0

     -rdebugger 

    dans votre fichier .rspec

    Ensuite, vous pouvez simplement courir

     bundle exec rake spec 

    sans aucun argument supplémentaire. Il n’est pas nécessaire de modifier votre code source non plus (même pas le code source de votre test)

    Pour Ruby 2.0, j’utilise 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 

    La meilleure façon de déboguer dans rSpec est d’append ce qui suit à votre fichier ‘spec_helper.rb’

     def logger Rails.logger end 

    Vous pouvez ensuite accéder à toutes les méthodes de journalisation dans vos fichiers rSpec et incorporer des éléments tels que la journalisation balisée. Ceci est bien sûr pour Rails 3 et plus. Si vous avez quelque chose avant Rails 3, ajoutez-le à la place:

     def logger RAILS_DEFAULT_LOGGER end 

    Une fois que vous avez vos déclarations de journalisation en place, vous pouvez entrer

     tail -f log/test.log 

    dans votre shell terminal afin de regarder vos instructions de journalisation pendant l’exécution des tests.

    Bien sûr, dans votre test rspec réel, vous entrez quelque chose comme

     logger.debug "#{1.class}" # => Fixnum 

    Si vous souhaitez filtrer vos instructions de débogage à partir du rest de votre journal de test, ajoutez simplement une chaîne aléatoire à votre instruction de débogage et dirigez la sortie de la commande tail vers grep.

    Exemple:

     logger.debug "random_ssortingng #{1.class}" # => Fixnum tail -f log/test.log | grep random_ssortingng 

    Mettre à jour

    J’ai changé d’avis à ce sujet. Vous devez installer pry, pry-doc et pry-debug, pry-debugger et pry-rail. Ensuite, utilisez binding.pry dans votre code pour ouvrir une console de débogage interactive qui gouverne le monde!

    L’option la meilleure et la plus propre consiste à utiliser --require dans votre fichier .rspec . Ce que vous mettez dépend de la gemme que vous utilisez pour le débogage.

     --color --require pry --require rails_helper 

    Celles-ci correspondent aux options de la ligne de commande (-d ou –debug est maintenant obsolète).

    N’hésitez pas à utiliser le debugger , ruby-debug ou encore pry-rails dans votre Gemfile.

    Pour votre Gemfile:

     group :test, :development do gem 'pry-rails' end 

    Mettre en require 'ruby-debug' etc. en tête de vos spécifications est tout simplement plus étroitement lié – d’autant plus que le commentaire le plus voté suggère de le placer individuellement dans TOUS vos fichiers. Avec le nouveau fichier .rspec , vous ne devriez plus avoir à placer require 'spec_helper' ou require 'rails_helper' en haut de vos fichiers.

    Ils ont plus de sens en tant qu’arguments implicites de ligne de commande.