2011-05-08 4 views
7

레일 애플리케이션 작업을 예약 할 때마다 사용하고 있습니다. -w, 난이 동시에 실행되는 두 개의 독립적 인 작업을 생성하는 것을 볼 때마다 내가 함께 내 crontab을에 기록 할 때언제든지 순차적 작업 스케줄링

every 24.hours do 
    command "do_this" 
    rake "do_that" 
end 

내 지점입니다 :

내가 좋아하는 작업이 있습니다. 문제는 둘 다 논리적으로 시퀀스입니다. 즉, rake 태스크 "do_that"은 "do_this"명령이 이미 수행되고 성공적으로 실행 된 경우에만 실행되어야합니다.

"do_this"와 같은 명령을 시도했습니다. & & rake "do_that"하지만 구문 오류가 발생했습니다.

  • 언제든지 작업간에 이러한 의존성을 만드는 트릭이 있습니까?

  • crontab은 동시에 작업을 병렬로 실행합니까, 아니면 큐에서 동시에 예정된 N 개의 작업을 처리합니까?

+0

왜 두 번째 명령을 첫 번째 명령으로 옮기지 않습니까? 논리적으로 관련이 있다면 함께 보관해야합니다. 더 나은 아직,이 두 가지를 호출하고 일정을 래퍼 작업을합니다. –

+0

"do_this"명령과 "do_that"레이크를 결합하고 싶지 않습니다. 나는 다른 일을 위해서 "do_this"명령을 사용한다. 확실히 do_something_else 명령을 둘 다 만들 수 있지만, 논리적 인 작업을 수행 할 수 있는지, 언제든지 명령을 처리 할 수 ​​있는지 알고 싶습니다. –

+0

글쎄, 첫째, 갈퀴 작업 중 하나를 별도로 사용하려는 인수는 두 작업이 논리적으로 결합되어 있기 때문에 여기서는 실제로 적용 할 수 없습니다. 귀하의 두 번째 진술에 대답하기 위해 언제나 crontab 명령을 인쇄하고 cron은 논리 AND를 지원하지 않기 때문에 불가능하지 않습니다. –

답변

6

난 당신이 할 수있는 두 가지가 있다고 생각합니다 :

(1) 레이크 작업에서 명령을 실행

task :do_that => :environment do 
    system "do_this" 
    ... 
end 

을 그리고 당신의 schedule.rb 파일을 단순화 :

every 24.hours do 
    rake "do_that" 
end 

(2) 명령 줄에서 모두 실행 :

every 24.hours do 
    command "do_this && rake do_that" 
end 
+0

좋은 아이디어, 나는 그것을 시험해 볼 것이다, 감사합니다! –