2013-06-02 2 views
0

여러 날짜를 저장하는 모델이 있습니다. 이제 날짜를 관찰하는 영구 관찰자를 찾고 있는데이 날짜 중 하나가 만료되면 (예 : 오늘 날짜와 비교하여) 일부 작업 (예 : ExpiredDate라는 다른 모델에이 날짜 저장)을 수행하고 싶습니다.레일스 3.2 모델의 날짜 속성을 관찰

Rails Observer는 새로운 항목이 생성, 삭제 또는 업데이트 된 후에 만 ​​모델을 관찰 할 수 있음을 알았습니다. 영구히 모델 속성을 관찰 할 수있는 방법이 있습니까?

+1

에 구성을 단순화합니다. [Resque] (https://github.com/defunkt/resque), [Sidekiq] (http://mperham.github.io/sidekiq/) 및 기타 참조. –

답변

2

관찰자는 작성, 업데이트 및 삭제 작업을하는 이유는 레일스에서 ​​어떤 작업을 시작하기위한 트리거가 필요하기 때문입니다. 일반적으로 이것은 사용자의 http 요청입니다.

시간 기준으로 작업을 트리거하려면 rake 작업을 작성하거나 rails/runner을 사용하여 일부 모델 방법을 실행할 수 있습니다.

그런 다음 cron으로 태스크 또는 스크립트를 실행하십시오.
whenever과 같은 보석을 사용하여 cron 작업을 처리 할 수 ​​있습니다. 또한 루비를 레일에서 돌릴 수있는 환경을 설정하는 데 도움이됩니다.
대신

10 0 * * * /bin/bash -l -c 'cd /home/user/rail-app/releases/20130522173433 && RAILS_ENV=production bundle exec rake my_rake_task --silent' 

의 그것은 모든 X 분을 실행 그들에 만료 된 기록과 행위를 확인하는 백그라운드 작업을 만들기

every :day, at: '0:10am' do 
    rake 'my_rake_task' 
end 
관련 문제