2011-01-26 2 views
1

3AM에서 매일 두 데이터베이스간에 동기화 루비 스크립트 (가능한 경우 레일스 동작에서)를 실행하고 싶습니다. 그 시간을 데이터베이스에 저장하는 것이 좋을 것입니다. 왜냐하면 동기화가 실패하면 1 시간 후에 다시 시도하기 때문에 (그리고 데이터베이스에서 매일 5 AM으로 쉽게 변경할 수 있기 때문입니다. 다른 응용 프로그램을 관리하는 다른 관리자도 원했을 것입니다.) 나는 레일즈 애플리케이션의 액션 중 하나에서 스크립트를 만들고 싶다. 그래서 스크립트를 실행할 링크를 클릭하여 관리 할 페이지를 만들 수있다. (필요하지는 않지만 별도의 루비 파일에있을 수있다. 결국 호출하지만, 전용 컨트롤러에서 작업을 수행하는 것이 더 좋을 것입니다. 왜냐하면이 스크립트와 같은 스크립트가 많을 것이고 비슷한 것을 한 곳에서 가질 수 있기 때문입니다. 이게 어쨌든 일이 없어도 가능합니까? - cron과 같은 - 나도 몰라요.설정 한 시간에 자동으로 스크립트를 수행합니다.

답변

7

당신이 크론 직접 처리하지 않으려면, whenever를 보라 : 데이터베이스는 뭔가를해야 할 경우 볼 수 있습니다. cron 작업을 작성하기위한 멋진 구문을 제공합니다.

every :hour do 
    runner "MyModel.do_something" 
end 
+0

아,이 방법은 내가 원했던 방식과 같습니다. 감사. – Kreeki

3

이렇게하려면 작업 스케줄러를 사용하십시오.

Windows의 경우 표준 스케줄러는 Task Scheduler입니다.

Linux의 경우 표준 스케줄러는 cron입니다.

둘 다 사용하기가 쉽습니다. Ruby 코드를 작성하는 경우 작업을 예약 할 수 있습니다. 당신이 확인할 수 있도록

0 3 * * * /command/to/run 

그것은 매 시간마다 실행하도록하려면 :

예를 들어,이 줄을 cron 입력 crontab -e으로 매일 매 시간마다 실행하는 명령을 예약하고 추가

0 * * * * /command/to/run 
관련 문제