2011-04-13 19 views
40

Estoy tratando de averiguar cómo conseguir que la consola de RubyMine envíe mensajes para gruñir. Específicamente, dado que ejecuto Rspec & Spork a través de RubyMine, me gustaría obtener notificaciones Growl de cuántas pruebas pasaron & falló.Cómo enviar notificaciones de RubyMine a Growl?

Tenía la versión de línea de comandos de esta funcionalidad que funciona a través de las gemas Autotest y RedGreen, pero ninguna de las gemas parece conservar su utilidad dentro de RubyMine.

¿Alguien ha enviado con éxito las notificaciones de Growl de RubyMine?

¿Alguien puede pensar en alguna de las herramientas o mecanismos que podrían permitir la notificación?

+0

@NewAlexandria Su última edición tiene la palabra clave "herramientas" en esto - solicitudes/recomendaciones para recursos fuera del sitio cerrarán esta pregunta rápidamente. Me gustaría tirar la palabra 'herramientas'. –

Respuesta

0

Puede desencadenar la ejecución de rspec con un AppleScript, y luego al finalizar la llamada Growl.

This applescript integration for RubyMine da una idea de una forma de enlazar eventos en Growl.

No es una respuesta completa, pero es un enfoque razonable.

+1

Estoy coordinando con el autor para restablecer el repositorio original. Es preferible poner aquí algunos códigos, pero en este caso fue largo y tal vez cualquier versión de esta respuesta hubiera incluido mucho volumen. En cualquier caso, y mi 'representante' a un lado, no estoy de acuerdo con el voto negativo que ocurre aquí sin intentar solicitar discusión, ya que no lo considero moderación de la calidad, pero obv. YMMV. –

+1

@NewAlexandria Me complace anular la votación negativa sobre su edición. Etiquetarme en un comentario cuando se haya completado su edición. El sistema no me permitirá volver a votar ahora mismo. –

+0

@LynnCrumbling He actualizado el enlace (FWIW más adelante) –

1

Puede ser Este código le ayudará a

# -*- ruby -*- 

    module Autotest::RedGreen 
    Autotest.send(:alias_method, :real_ruby, :ruby) 
    Autotest.send(:define_method, :ruby) do |*args| 
    real_ruby + %[ -rrubygems -e "require 'redgreen'" ] 
end 

    # Clean the output so other modules can work correctly 
    Autotest.add_hook :ran_command do |at| 
    at.results.each do |r| 
    r.gsub!("\033[31m", "") 
    r.gsub!("\033[32m", "") 
    r.gsub!("\033[33m", "") 
    r.gsub!("\033[0m", "") 
    end 
end 
end 

module Autotest::Growl 
AUTOTEST_IMAGE_ROOT = "~/.autotest_images" 

def self.growl(title, msg, img, pri=0, sticky="") 
system "growlnotify -n autotest --image #{img} -p #{pri} -m '#{msg.inspect} #{title}'  #{sticky}" 
end 

    Autotest.add_hook :red do |at| 
    growl("FAIL", "#{get_results(at)}", "#{AUTOTEST_IMAGE_ROOT}/fail.png", 2) 
end 

    Autotest.add_hook :green do |at| 
    growl("Pass", "#{get_results(at)}", "#{AUTOTEST_IMAGE_ROOT}/pass.png") 
end 

private 
def self.get_results(at) 
results = [at.results].flatten.join("\n") 

    if results.include? 'tests' 
    output = results.slice(/(\d+)\s+tests?,\s*(\d+)\s+assertions?,\s*(\d+)\s+failures? (,\s*(\d+)\s+errors)?/) 
else 
    output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+not implemented)?/) 
    end 
    output 
end 
end 

# Esclusioni 
Autotest.add_hook :initialize do |at| 
    %w{.hg .git .svn stories tmtags Rakefile Capfile README spec/spec.opts spec/rcov.opts vendor/gems autotest svn-commit .DS_Store }.each do |exception| 
    at.add_exception(exception) 
end 

    at.add_mapping(/spec\/defaults.rb/) do |f, _| 
    at.files_matching %r%^spec/(controllers|helpers|lib|models|views)/.*\.rb$% 
    end 
end 
+1

Si alguien lo prueba y verifica que funciona, coméntelo aquí y lo marcaré como respondido. Ya no trabajo en RubyMine y no puedo verificarlo. –

1

No sé sobre RubyMine pero esto se debe hacer en el terminal:

rake db:setup && growlnotify -m 'Finished DB setup' 
Cuestiones relacionadas