如何发送RubyMine通知咆哮?
我想弄清楚如何让RubyMine的控制台发送消息咆哮。 具体来说,因为我通过RubyMine运行Rspec&Spork,所以我想让Growl通知有多lesstesting通过和失败。
我有这个function的命令行版本通过Autotest和RedGreen的gem,但是这两个gem似乎都没有保留在RubyMine中的有用性。
有没有人成功推动RubyMine的Growl通知?
任何人都可以想到任何可以启用通知的工具或机制?
我不知道RubyMine,但这应该在terminal:
rake db:setup && growlnotify -m 'Finished DB setup'
可能是这段代码会帮助你
# -*- 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
你可以用AppleScript触发rspec运行,然后完成调用Growl。
RubyMine的这个applescript集成提供了一种将事件绑定到Growl的方法。
这不是一个完整的答案,但这是一个合理的方法。