문제

어쨌든 Rails 앱 내부에서 간단한 작업 예약을 설정할 수 있습니까? 매시간 또는 매일 또는 매주 실행하고 싶은 코드가 있습니다. 나는 그것들을 별도의 스크립트로 나누고 싶지 않아 Cron 작업을 통해 예약해야합니다. 내가 그렇게한다면, 나는 스크립트를 백업하는 것을 기억해야한다. 그리고 서버를 재건한다면, 나는 가서 모든 cron 작업을 추가해야한다면, 내가 필요한 것에 대해 약간 지저분한 것처럼 보인다.

나는 Rails 앱의 어딘가에 작업을 예약하고 원할 때 마술처럼 실행할 수 있기를 바랍니다. 어떤 아이디어?

도움이 되었습니까?

해결책

Rufus-Scheduler 또는 gem이있을 때마다 더 인기있는 '더 인기있는'보석/플러그인이 있습니다. 나는 @douglassellers의 솔루션을 좋아하지만 그것에 대해 듣지 못했습니다.

다른 팁

나는 비슷한 것을 달성하기 위해 "데이터베이스의 비동기 우선 순위 대기열을 뒷받침하는 데이터베이스"지연 작업을 사용합니다. 살펴보십시오 http://github.com/tobi/delayed_job

여전히 '레이크 작업 : 작업'을 시작하는 것이 필요하지만 다른 Cron 작업을 많이하는 것보다 낫습니다. 문서에서 : run_at 속성 - "Rails 앱의 어딘가에 작업을 스케줄하고"문제를 원할 때 마술처럼 실행되도록하는 것처럼 보입니다.

Rails Cron (Gem Install Rails_cron)과 같은 것을 사용하여이를 수행 할 수 있습니다.이 작업을 수행 할 수 있습니다.이 작업을 수행 할 수 있습니다. 추가 레일 인스턴스를 모니터링하고 중지하고 나머지 앱과 함께 시작해야하며 내 경험에 따라 내려 가기 쉽기 때문에 이런 식으로 수행하는 것이 좋습니다.

더 나은 해결책은 Craken을 사용하는 것입니다. http://github.com/latimes/craken, Rails 앱에서 Yaml 파일을 통해 Crontabs를 관리합니다. 예정된 각 작업은 YAML 파일로 정의 된 다음 배포시 Craken이 시스템 레벨 Crontab 파일을 업데이트 해야하는지 여부를 결정합니다. Capistrano 배포 파일에 바로 연결되며 합리적으로 턴키입니다. 이를 통해 Rails 앱에서 예정된 작업을 여전히 관리하면서 실제로 OS 레벨 CRON에서 실행하는 이점이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top