2010-08-14 2 views
2

Есть ли способ добавить уведомления Growl в конце всех задач Rake?Добавление уведомлений Growl после завершения задач Rake

Первоначально я думал о создании задачи, которая вырастает, и добавляя ее как зависимость от задач, из которых я хочу получать уведомления, но понял, что зависимости запускаются до начала задачи. Есть ли способ добавить задачи, которые будут выполняться после завершения определенных задач Rake?

Было бы очень полезно, поэтому мне не нужно сидеть там, ожидая долгих задач.

** обновление 8/17/2010 **

Вот решение делать это с growlnotify ... это в вашем Rakefile:

 
def growl(message) 
    growlnotify = `which growlnotify`.chomp 
    system %(#{growlnotify} -sm #{message}) 
end 

task_names = Rake.application.top_level_tasks 
task_names.each do |name| 
    Rake.application[name].enhance { growl "'Task #{name} completed (#{Time.now})'" } 
end 

- Кредит на Alkaline - увидеть его решение с использованием рубинового-рычания ниже -

ответ

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 
+0

Но это означает, что я должен добавить любую другую задачу в качестве зависимости для: по умолчанию права? Нет ли простого способа подражать этому поведению без действия по умолчанию, выполняющего все остальные задачи, которые у меня есть? – funkymunky

+0

Ваш вопрос мне непонятен. Я обновил ответ для неявного вызова действия рычания в конце каждой задачи верхнего уровня (это задача, которую вы запрашиваете при вызове рейка). – Alkaline

+1

Спасибо. Я закончил использование growlnotify вместо ruby-рычания, но подсказка здесь о методах top_level_tasks и #enhance помогла много! – funkymunky

0

Драгоценный камень rakegrowl делает это очень просто. Все, что вам нужно сделать, это установить драгоценный камень rakegrowl и псевдоним rake в rake -rubygems -r rakegrowl в ваш .bashrc.

 Смежные вопросы

  • Нет связанных вопросов^_^