2010-08-14 6 views
2

상당히 데이터베이스 집약적 인 작업을 주기적으로 구현해야합니다. 이 작업이 관련된 응용 프로그램에 레일을 사용하고 있으므로 접근 용이성과 독창성을 위해 레일을 사용하여 cron 작업을 가장 효과적으로 구현할 수있는 방법을 알고 싶습니다. 나는 갈퀴가 하나의 해결책이라는 것을 알고 있지만 그것을 사용하는 방법을 전혀 모르고있다.레일을 사용하여 cron 작업을 설정하는 방법은 무엇입니까?

감사합니다.

답변

3

javan- 언제든지 살펴 보는 것도 좋은 방법입니다.

0

rubber

http://github.com/javan/whenever

, 클라우드 배포를위한 카피 스트라 노 플러그인은 cron 작업을 관리하기위한 도우미 스크립트 세트를 제공합니다. 이 스크립트는 고무와 완전히 독립적으로 작동합니다.

"cron-rake", "cron-runner"및 "cron-sh"스크립트를 http://github.com/wr0ngway/rubber/tree/master/lib/generators/vulcanize/templates/base/script/에서 가져 와서 Rails 프로젝트의 스크립트/디렉토리에 배치하면 좋은 방법입니다. 실행 가능하도록 만드는 것을 잊지 마십시오.

실제 작업의 대부분은 "cron-sh"에서 수행됩니다. "cron-rake"는 레이크 작업을 실행하기위한 편리한 래퍼입니다. "cron-runner"는 임의의 Ruby를 실행하기위한 편리한 래퍼입니다 (스크립트/러너와 비슷합니다).

+0

이렇게하면 사용자가 URL에 액세스하지 못하게됩니까? – Amit

1

스크립트를 구현하여 필요한 모든 작업을 수행 한 다음 cron 작업에서 script/runner으로 호출하십시오.

0 * * * * cd /path/to_your/app && RAILS_ENV=production script/runner scripts/my_maintenance_script.rb 

그 시간에 한 번씩 프로덕션 환경의 맥락에서 my_maintenance_script.rb 킥오프 것입니다. 꽤 베어 메탈이지만 일을 끝내야합니다.

+0

문제는 이것도 사용자가 스크립트를 실행할 수 있다는 것입니다 ... 서버가 오버로드됩니다. – Amit

0

delayed_job이 좋으면 데이터베이스의 작업 세부 정보를 저장합니다.

+0

delayed_job은 특정 시간에 특정 작업을 실행하는 데 적합합니다. 반복적 인 작업에는 적합하지 않습니다. 물론 각 작업이 끝나면 작업 실행을 예약 할 수 있습니다. 그러나 그것은 일이 실패하고 재실행 될 때 문제를 혼란스럽게 할 것입니다. –

관련 문제