2009-02-11 9 views
0

Je suis nouveau sur Rails et je suis conscient qu'il a des choses telles que les tests unitaires intégrés. Mais je suis intéressé à faire quelques tests plus simples qui sont équivalents à votre "printf" en C. Donc, je teste une page de connexion que j'ai écrite et je veux tracer le code pour voir ce que chaque ligne comme mes méthodes find retournent. J'essaie de sortir avec "puts" mais je ne reçois rien dans la ligne de commande.Test "Printf" dans Rails

Répondre

10

J'utilise des instructions puts tout le temps ainsi que le débogueur ruby! C'est bien.

Dans les rails, vous pouvez faire quelques choses. Je mets "puts" dans mon code et quand j'exécute script/server à la ligne de commande, la sortie apparaît dans mon Terminal.app. J'utilise un Mac, mais je suis sûr qu'il existe un moyen similaire de suivre l'activité de votre application sur votre plate-forme de prédilection.

L'autre option consiste à utiliser l'instruction du consignateur. vous pouvez appeler

logger.debug("My #{variable}") 

et de trouver ces instructions directement dans votre fichier journal/development.log. De plus, si vous utilisez un système * nix, vous pouvez utiliser la commande "tail" pour suivre la dernière instruction écrite dans votre journal, une à la fois.

tail -f log/development.log 

De cette façon, vous pouvez écrire vos instructions et les voir au fur et à mesure. Il existe plusieurs niveaux de l'exploitation forestière:

logger.warn 
logger.info 
logger.debug 
logger.fatal 

chaque environnement (développement, test, production) détermineront ce « niveau » de l'exploitation forestière sera appelée, de sorte que vous pouvez écrire vous connecter déclarations bon gré mal gré avec logger.debug alors que dans le développement , mais ces instructions ne seront pas écrites lorsque vous déploierez en fonction des niveaux de journalisation par défaut.

+0

Merci. Donc les instructions puts fonctionnent vraiment, j'écrivais juste du code pauvre qui signifiait qu'il était ignoré! – alamodey

1

Connaissez-vous ruby-debug?

  1. Installez la gemme ruby-debug.
  2. Démarrez votre serveur avec l'option -u.

    script/serveur -u

  3. Mettez une déclaration debugger dans votre code où vous voulez arrêter.
  4. Vous aurez un accès console à vos variables ainsi que la possibilité de parcourir votre code.

Vérifiez le ruby-debug documentation pour plus de détails.

3

quelque chose comme utilisateur ceci:

logger.info "method called with #{params.inspect}" 

(vous pouvez mettre une variable à l'intérieur de la # {})

Une fois que vous amuser avec qui, consultez ./script/console et rubis -debug

0

Je l'ai fait avant - avec des passagers, vous n'avez pas script/sortie du serveur, donc j'écrit ceci:

# extras/sexy_logging.rb 
module SexyLogging 
    def log(text) 
    return true if RAILS_ENV == 'production' 

    string = "\e[0;32mLog:\e[m #{text}" 

    (100 - string.length).times do 
     string << ' ' 
    end 
    string << "(#{caller.first})" 

    logger.debug string 
    end 
end 

ActiveRecord::Base.send    :include, SexyLogging 
ActionController::Base.send   :include, SexyLogging 

Ensuite, vous pouvez écrire

log variable 

ou

log 'Testing user' 

tail -f log/development.log |grep Log: 

et de voir uniquement ce que vous consignez, ligne par ligne et avec les couleurs.

Questions connexes