2

有没有办法在所有 Rake 任务的末尾添加 Growl 通知?

我最初想创建一个 Growls 任务,并将其作为依赖项添加到我希望从中发出警报的任务中,但我意识到依赖项在任务开始之前就运行了。有没有办法在某些 Rake 任务完成后添加要运行的任务?

它真的很有用,所以我不必坐在那里等待长时间的任务。

** 2010 年 8 月 17 日更新**

这是使用growlnotify 执行此操作的解决方案...将其放入您的Rakefile:

def 咆哮(消息)
  growlnotify = `哪个growlnotify`.chomp
  系统 %(#{growlnotify} -sm #{message})
结尾

task_names = Rake.application.top_level_tasks
task_names.each 做 |name|
  Rake.application[name].enhance { 咆哮“'Task #{name} 已完成 (#{Time.now})'”}
结尾

-- 归功于 Alkaline - 请参阅下面他使用 ruby​​-growl 的解决方案 --

4

2 回答 2

2

这是您可以为调用(顶级)任务隐式调用咆哮动作的方法

require 'rake'
require 'ruby-growl'

task :task1 do puts "Doing task 1"; sleep 1; end
task :task2 do puts "Doing task 2"; sleep 1; end
task :default => [:task1, :task2]

# Add a growl action to all top level tasks
task_names = Rake.application.top_level_tasks
task_names.each do |name|
  Rake.application[name].enhance {growl(name)}
end

def growl(name)
  g = Growl.new "localhost", "ruby-growl", ["ruby-growl Notification"]
  g.notify "ruby-growl Notification", "My Project", "Task #{name} completed"
end
于 2010-08-14T07:12:59.437 回答
0

gem rakerowl非常简单地做到了这一点。您所要做的就是在您的 .bashrc 中安装 rakerowl gem 和rake别名rake -rubygems -r rakegrowl

于 2011-03-14T21:10:46.900 回答