2012-06-12 8 views
12

Estoy intentando depurar un script de Hubot existente y en el futuro escribir el mío, y necesito una manera fácil de depurarlo o al menos imprimir valores en algún lugar (pero no en el canal) . ¿Como lo puedo hacer?Depuración/impresión en un script de Hubot

Puntos de bonificación si esto se puede hacer con solo usar Node en algún modo local interactivo. Realmente no estoy seguro por dónde empezar.

Todas las secuencias de comandos que utiliza Hubot están escritas en Coffeescript.

P.S. Estoy usando Hubot con Hipchat.

Respuesta

8

He descubierto la respuesta yo mismo: console.log MSG en un .Coffee fuente de Coffeescript hace exactamente lo que necesitaba.

+7

También puede ejecutar el REPL dejando fuera la opción -a '' que le permitirá probar y depurar secuencias de comandos localmente. –

+0

@Artem ¿qué comando está ejecutando localmente para activar el hubot y todo? También estoy buscando depurar un script aquí :) – mecampbellsoup

10

No sé si esto ayuda, pero encontré una forma de inspeccionar los objetos.

Util = require "util" 

module.exports = (robot) -> 
    robot.hear /hi robot/i, (msg) -> 
    user = robot.brain.usersForFuzzyName(msg.message.user.name) 
    msg.send "#{Util.inspect(user)}" 

Esto permitió ser para ver todos los elementos del objeto para que pudiera averiguar lo que estaba haciendo mal ...

+0

@radixhound también lo hace 'msg.send" foo "' imprimir en la consola después de que hayas iniciado Hubot a través de algo como 'bin/hubot'? ¿Cuál es el paso justo antes de esto para inicializar tu Hubot? ¡Gracias! – mecampbellsoup

+0

Sí, pateo Hubot a través de 'bin/hubot' y pongo la salida dentro de una respuesta. Básicamente, inicie hubot desde la línea de comando y diga 'hi robot' y genere la información. Probablemente sea mejor hacer algo en su lugar como 'muéstrame los usuarios'. – radixhound

3

Puede utilizar

robot.logger.info "your log message here" 

que registrará sólo al igual que los otros mensajes de hubot se registran.

0

Encontré este fragmento (coffeescript) en algún lugar que registra todos los errores, bastante útil para agregar a los bots en desarrollo.

robot.error (err, res) -> robot.logger.error "#{err}\n#{err.stack}" if res? res.reply "#{err}\n#{err.stack}"

Cuestiones relacionadas