사용자가 지난 달의 작업 표를 제출했는지 확인하고, 그렇지 않은 경우 이메일 알리미를 보냅니다. 이 방법은 매일 실행해야합니다. 모든 사용자가 실제로이 방법을 트리거하기위한 조치는 없으며 매일 설정된 시간에 실행됩니다.레일즈 3에서 하루에 한 번 실행될 메소드를 예약하십시오.
레일 3에서 이것을 구현하는 가장 좋은 방법은 무엇입니까?
사용자가 지난 달의 작업 표를 제출했는지 확인하고, 그렇지 않은 경우 이메일 알리미를 보냅니다. 이 방법은 매일 실행해야합니다. 모든 사용자가 실제로이 방법을 트리거하기위한 조치는 없으며 매일 설정된 시간에 실행됩니다.레일즈 3에서 하루에 한 번 실행될 메소드를 예약하십시오.
레일 3에서 이것을 구현하는 가장 좋은 방법은 무엇입니까?
방법을 실행하기 위해 레이크 작업을 생성하고 전자 메일을 전달하고 cron 생성을 자동화 할 수있는 모든 보석을 살펴보십시오.
https://github.com/javan/whenever
는 그런 다음에 "설정/schedule.rb"에서 때마다 구성 파일을 만들 수 있습니다;
every 1.day, :at => '12:00 pm' do
rake "timesheet:check"
end
반드시 레일 앱의 일부로 이것을 실행해야합니까? 자체 서비스로 간주 될 수 있습니까?
레일 앱에서이 기능을 옮겨서 독자적으로 실행할 수 있다면 루비 스크립트를 작성하고 cron 작업을 통해 예정된 시간에 실행하면됩니다.
레일 앱에서 불필요하게 지저분해질 수 있습니다. 시간을 지속적으로 폴링하고 그 메소드를 호출 할 시간이 필요한지 알아야하기 때문입니다. cron 작업은 항상 자신과 같은 작업을 수행하는 쉬운 방법입니다.
사용중인 운영 체제를 알려 주시면 크론 작업을 설정하는 데 도움이되는 자료를 알려 드리게되어 기쁩니다.
Resque Scheduler을 살펴보십시오. cron을 0 0 * * *
으로 설정하면 매일 스크립트를 실행하게됩니다. Here은 Resque의 railscasts입니다.
저는 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
이 작업에 cron 작업을 사용할 수 있습니까? –
잘 모르겠습니다. 응용 프로그램을 배포 할 때마다 손쉽게 cron 작업을 구성해야하므로 귀찮을 수 있으므로 솔루션을 쉽게 배포 할 수있는 솔루션을 원합니다. – link664
cron 작업을 한 번만 구성하면됩니다. 그러면 매번 최신 레일 코드가 자동으로 실행됩니다. 내가 랩탑에있을 때 나는 예제를 게시 할 것이다.:) –