2012-03-22 3 views
3

사용자가 지난 달의 작업 표를 제출했는지 확인하고, 그렇지 않은 경우 이메일 알리미를 보냅니다. 이 방법은 매일 실행해야합니다. 모든 사용자가 실제로이 방법을 트리거하기위한 조치는 없으며 매일 설정된 시간에 실행됩니다.레일즈 3에서 하루에 한 번 실행될 메소드를 예약하십시오.

레일 3에서 이것을 구현하는 가장 좋은 방법은 무엇입니까?

+0

이 작업에 cron 작업을 사용할 수 있습니까? –

+0

잘 모르겠습니다. 응용 프로그램을 배포 할 때마다 손쉽게 cron 작업을 구성해야하므로 귀찮을 수 있으므로 솔루션을 쉽게 배포 할 수있는 솔루션을 원합니다. – link664

+0

cron 작업을 한 번만 구성하면됩니다. 그러면 매번 최신 레일 코드가 자동으로 실행됩니다. 내가 랩탑에있을 때 나는 예제를 게시 할 것이다.:) –

답변

3

방법을 실행하기 위해 레이크 작업을 생성하고 전자 메일을 전달하고 cron 생성을 자동화 할 수있는 모든 보석을 살펴보십시오.

https://github.com/javan/whenever

는 그런 다음에 "설정/schedule.rb"에서 때마다 구성 파일을 만들 수 있습니다;

every 1.day, :at => '12:00 pm' do 
    rake "timesheet:check"     
end 
0

반드시 레일 앱의 일부로 이것을 실행해야합니까? 자체 서비스로 간주 될 수 있습니까?

레일 앱에서이 기능을 옮겨서 독자적으로 실행할 수 있다면 루비 스크립트를 작성하고 cron 작업을 통해 예정된 시간에 실행하면됩니다.

레일 앱에서 불필요하게 지저분해질 수 있습니다. 시간을 지속적으로 폴링하고 그 메소드를 호출 할 시간이 필요한지 알아야하기 때문입니다. cron 작업은 항상 자신과 같은 작업을 수행하는 쉬운 방법입니다.

사용중인 운영 체제를 알려 주시면 크론 작업을 설정하는 데 도움이되는 자료를 알려 드리게되어 기쁩니다.

+0

OSX에서 개발 중이며, 제작에 우분투가 사용됩니다. – link664

+0

개발 중에 스크립트를 수동으로 실행할 수 있으며 프로덕션 서버의 경우이 링크는 스크립트를 실행하기 위해 cron 작업을 설정하는 데 필요한 모든 정보를 제공합니다 (https://help.ubuntu.com/community/CronHowto). – Nikhil

0

Resque Scheduler을 살펴보십시오. cron을 0 0 * * *으로 설정하면 매일 스크립트를 실행하게됩니다. HereResque의 railscasts입니다.

0

저는 CentOS에서 생산 시스템을 사용하여 Mac OS X에서 개발하고 있습니다. 그러나 이것은 우분투에도 적용되어야합니다.

나는 report.rake

namespace :report do 
    desc "Email stats" 
    task :email_global_stats, [] => :environment do |t, args| 
    StatsMailer.global_stats_email.deliver 
    end 
end 

에 정의 된 레이크 작업 그리고이 StatsMailer에 정의 된 이메일 새로운 통계에 대한 검사의 논리의 대부분을 가지고있다. 그런 다음 생산 시스템에서, 나는 (crontab -e를 통해 액세스) 내 crontab을이 있습니다

30 7 * * * RAILS_ENV=production /usr/local/bin/rake -f /home/user/code/stats/current/Rakefile report:email_global_stats 

내가 모든 것을 자정에 실행을하지 않아도 그냥 그래서 7시 30 분 오전 설정되어. 그리고 나서 로컬에서 테스트하고 싶습니다 :

rake report:email_global_stats 

from my development directory.

sudo postfix start 
관련 문제