2010-08-14 5 views
2

모든 레이크 작업 끝에 Growl 알림을 추가하는 방법이 있습니까?레이크 작업이 완료된 후 Growl 알림 추가

처음에는 Growls라는 작업을 생성하고이를 경고가 필요한 작업에 종속시키는 것으로 생각했지만 작업이 시작되기 전에 종속성이 실행된다는 것을 알았습니다. 특정 레이크 작업이 완료된 후에 실행할 작업을 추가하는 방법이 있습니까?

정말 오랫동안 기다릴 필요가 없으므로 유용 할 것입니다. - 신용을 알칼리성으로

 
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 

을 : 다음 갱신 2010년 8월 17일 **

** 는 Rakefile에 넣고 ... growlnotify으로 그 일을위한 솔루션 - 아래 루비 으르렁 사용에 대한 자신의 솔루션을 참조 -

여기

답변

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

. ruby-growl 대신에 growlnotify를 사용했지만 결국 top_level_tasks와 #enhance 메소드에 대한 팁이 많이 도움이되었습니다! – funkymunky

0

보석 rakegrowl이 작업은 매우 간단합니다. .bashrc에 rakegrowl gem과 별칭 rake ~ rake -rubygems -r rakegrowl을 설치하기 만하면됩니다.

관련 문제