微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何发送RubyMine通知给Growl?

如何解决如何发送RubyMine通知给Growl?

| 我正在尝试弄清楚如何使Rubymine的控制台向咆哮发送消息。具体来说,由于我是通过Rubymine运行Rspec&Spork的,所以我想获得Growl通知通知有多少测试通过和失败。 我通过Autotest和RedGreen gem拥有此功能的命令行版本,但是这两个gem似乎都没有在Rubymine中保留其有用性。 有人成功从Rubymine推送了Growl通知吗? 谁能想到可以启用通知的任何工具或机制?     

解决方法

可能是这样的代码将帮助您
    # -*- 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\",\"#{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
    ,我不了解RubyMine,但这应该在Terminal中进行:
rake db:setup && growlnotify -m \'Finished DB setup\'
    ,您可以使用AppleScript触发rspec运行,然后在完成时调用Growl。 RubyMine的applescript集成提供了一种将事件挂接到Growl中的方法。 这不是一个完整的答案,但这是一个合理的方法。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。