我想弄清楚如何讓RubyMine的控制檯發送消息來咆哮。具體來說,因爲我通過RubyMine運行Rspec & Spork,所以我想讓Growl通知有多少測試通過&失敗。如何發送RubyMine通知咆哮?
我有通過Autotest和RedGreen gem工作的這個功能的命令行版本,但是這兩個gem似乎都沒有在RubyMine中保留它的實用性。
有沒有人成功地從RubyMine推送Growl通知?
任何人都可以想到任何可以啓用通知的工具或機制嗎?
我想弄清楚如何讓RubyMine的控制檯發送消息來咆哮。具體來說,因爲我通過RubyMine運行Rspec & Spork,所以我想讓Growl通知有多少測試通過&失敗。如何發送RubyMine通知咆哮?
我有通過Autotest和RedGreen gem工作的這個功能的命令行版本,但是這兩個gem似乎都沒有在RubyMine中保留它的實用性。
有沒有人成功地從RubyMine推送Growl通知?
任何人都可以想到任何可以啓用通知的工具或機制嗎?
您可以使用AppleScript觸發rspec運行,然後在完成時調用Growl。
This applescript integration for RubyMine給出了一種將事件連接到Growl的方法。
這不是一個完整的答案,但它是一個合理的方法。
我正在與作者協調恢復原始回購。在這裏放置一些代碼仍然是可取的 - 但在這種情況下它很長,也許這個答案的任何版本都會包含很多數量。在這兩種情況下,我拋開「代表」,我不同意在這裏發生的下意識而不嘗試討論討論,因爲我不認爲它質量適中,但obv。因人而異。 – 2015-03-09 20:23:21
@NewAlexandria我很高興在編輯時退出downvote。編輯完成後,在評論中標記我。該系統現在不會讓我退出我的選票。 – 2015-03-09 21:42:11
@LynnCrumbling我已經更新了鏈接(FWIW現在晚些時候) – 2015-10-07 16:14:20
可能是這樣的代碼將幫助您
# -*- 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
如果有人測試這個並驗證它是否有效,請在這裏留言,我會將其標記爲已回答。我不再在RubyMine中工作,我無法驗證。 – 2014-09-02 19:02:58
我不知道RubyMine的,但這應該在終端做:
rake db:setup && growlnotify -m 'Finished DB setup'
@NewAlexandria上次編輯在關鍵字「工具」它 - 針對異地資源的請求/建議將快速關閉此問題。我會抽出'工具'這個詞。 – 2015-03-09 21:44:37