【问题标题】:Adding Growl notifications after Rake tasks are finished在 Rake 任务完成后添加 Growl 通知
【发布时间】:2010-08-14 00:52:35
【问题描述】:

有没有办法在所有 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 的解决方案--

【问题讨论】:

    标签: ruby rake growl rakefile growlnotify


    【解决方案1】:

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

    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
    

    【讨论】:

    • 但这意味着我必须将所有其他任务添加为 :default 的依赖项,对吗?如果没有运行我在那里的所有其他任务的默认操作,是否没有简单的方法来模拟这种行为?
    • 你的问题我不清楚。我已经更新了在每个顶级任务结束时隐式调用咆哮动作的答案(这是您在调用 rake 时请求的任务)。
    • 谢谢。我最终使用了 growlnotify 而不是 ruby​​-growl,但是这里关于 top_level_tasks 和 #enhance 方法的提示很有帮助!
    • 我也用github.com/visionmedia/growl 进行了咆哮通知。无法让 ruby​​-growl 连接。
    【解决方案2】:

    gem rakegrowl 非常简单。您所要做的就是在您的 .bashrc 中安装 rakerowl gem 和别名 rakerake -rubygems -r rakegrowl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多