2011-03-31 3 views
0

사용자가 "on"이라는 부울 값을 true로 설정하여 수탉이라는 레코드를 생성하는 레일 응용 프로그램이 있습니다.나중에 실행할 기능을 예약하는 방법은 무엇입니까?

Rooster 
=> Rooster{:id integer, :user_id integer, :created_at datetime, :updated_at datetime, :on boolean} 

지금, 일정 기간 (예를 들어 10 시간) 후 나는 응용 프로그램을 필요가 자동으로 "거짓"(사용자가 아무것도하지 않음)하는 것을 부울 플립 : 레일 콘솔에서이처럼 보인다.

아주 간단한 생각. 그래서, 레일즈 3에 일정 시간이 경과 한 후에 실행되는 메소드를 어떻게 만들 수 있습니까?

+0

내 우려에-루비 솔루션 응용 프로그램이 죽거나 살해됩니다, 또는 시스템 재부팅하면 예약 된 이벤트가 유지되고 있는지에 대한 여부이다. 'at' 및'cron '과 같은 OS 기반 솔루션은 살아남지 만 시스템의 명령을 실행해야합니다. 그런 다음 데이터베이스의 플래그를 설정할 수있는 응용 프로그램을 트리거해야합니다. –

+0

흥미로운 점. 그것을 고려하지 않았다. – istan

+0

그것은 기업 환경에서 수년 동안 생각한 것을 배웁니다. –

답변

1

? :) 자레드에 의해 링크 된 문서를 읽을 것을 권합니다.

2

DelayedJob 또는 Resque 중 하나를 살펴볼 수 있습니다. 당신이

def in_the_future 
    # Some other code 
    end 
    handle_asynchronously :in_the_future, :run_at => Proc.new { 10.hours.from_now } 

아주 좋은

같은 뭔가를 할 수 DelayedJob와

1

Ruby 앱의 클라우드 기반 백그라운드 처리/작업자 큐 인 SimpleWorker를 살펴보십시오.

프런트 엔드 작업을 오프로드 (전자 메일 전송, 트위터에 게시), 예약 된 작업 실행 또는 병렬 작업 (웹 크롤링, 루비 스트림 등)의 확장을 위해 설계되었습니다. 이러한 유형의 사용에 적합합니다.

작업이 클라우드에서 실행되므로 앱 서버에서 작업을 오프 로딩 할뿐만 아니라 영구 클라우드 인프라 (지속성 데이터 저장소 및 메시지 대기열을 사용하여 AWS에서 서비스가 실행 됨)에서 실행되는 안정성을 확보 할 수 있습니다.

(공시 : 나는 회사를 위해 일한다.)

관련 문제