2011-04-13 65 views
40

我想弄清楚如何讓RubyMine的控制檯發送消息來咆哮。具體來說,因爲我通過RubyMine運行Rspec & Spork,所以我想讓Growl通知有多少測試通過&失敗。如何發送RubyMine通知咆哮?

我有通過Autotest和RedGreen gem工作的這個功能的命令行版本,但是這兩個gem似乎都沒有在RubyMine中保留它的實用性。

有沒有人成功地從RubyMine推送Growl通知?

任何人都可以想到任何可以啓用通知的工具或機制嗎?

+0

@NewAlexandria上次編輯在關鍵字「工具」它 - 針對異地資源的請求/建議將快速關閉此問題。我會抽出'工具'這個詞。 – 2015-03-09 21:44:37

回答

0

您可以使用AppleScript觸發rspec運行,然後在完成時調用Growl。

This applescript integration for RubyMine給出了一種將事件連接到Growl的方法。

這不是一個完整的答案,但它是一個合理的方法。

+1

我正在與作者協調恢復原始回購。在這裏放置一些代碼仍然是可取的 - 但在這種情況下它很長,也許這個答案的任何版本都會包含很多數量。在這兩種情況下,我拋開「代表」,我不同意在這裏發生的下意識而不嘗試討論討論,因爲我不認爲它質量適中,但obv。因人而異。 – 2015-03-09 20:23:21

+1

@NewAlexandria我很高興在編輯時退出downvote。編輯完成後,在評論中標記我。該系統現在不會讓我退出我的選票。 – 2015-03-09 21:42:11

+0

@LynnCrumbling我已經更新了鏈接(FWIW現在晚些時候) – 2015-10-07 16:14:20

1

可能是這樣的代碼將幫助您

# -*- 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

如果有人測試這個並驗證它是否有效,請在這裏留言,我會將其標記爲已回答。我不再在RubyMine中工作,我無法驗證。 – 2014-09-02 19:02:58

1

我不知道RubyMine的,但這應該在終端做:

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