요즘 이쪽 질문이 많이 올라오길레 정리해 봤습니다.
$ gem install whenever
번들러를 사용한다면, Gemfile에 이렇게 적고
gem 'whenever', require: false
번들 인스톨을 합니다.
$ bundle
$ cd /path/to/your/app
$ wheneverize .
하시면 config/schedule.rb
파일이 만들어집니다.
열어보죠.
# Use this file to easily define all of your cron jobs.
#
# It's helpful, but not entirely necessary to understand cron before proceeding.
# http://en.wikipedia.org/wiki/Cron
# Example:
#
# set :output, "/path/to/my/cron_log.log"
#
# every 2.hours do
# command "/usr/bin/some_great_command"
# runner "MyModel.some_method"
# rake "some:great:rake:task"
# end
#
# every 4.days do
# runner "AnotherModel.prune_old_records"
# end
# Learn more: http://github.com/javan/whenever
음. 뭐 일일히 해석하긴 귀찮고, 자주사용하는 케이스를 몇개 예를 들어보죠.
5분마다 실행하기
every 5.minutes do
# do something
end
매일 자정에 실행하기
every 1.day, :at => ’12 pm' do
# do something
end
일요일 4:30분에 실행하기
every :sunday, :at => '4:30 am' do
# do something
end
이 예제에서는 5분마다 헬로우를 로그에 찍어보도록 하겠습니다. (로그 폴더가 아직 없으면 log폴더를 먼저 만들어두세요.)
config/schedule.rb
파일
set :output, "/path/to/your/app/log/cron_log.log"
every 5.minutes do
rake "echo:hello"
end
Rakefile
파일
namespace :echo do
task :hello do
puts "Hello form rake"
end
end
rake 를 실행해 재대로 출력하는지 확인해봅시다.
$ cd /path/to/your/app
$ rake echo:hello
Hello form rake
$ cd /path/to/your/app
$ whenever
$ whenever --update-crontab
$ crontab -l
로 크론텝에 들어있는지 확인할수 있습니다.
크론 프로세스 확인은 이렇게 합니다.
$ ps aux|grep cron
별 문제가 없었다면 log파일이 5분마다 증가하실꺼에요.
$ cat cron_log.log
Hello form rake
크론텝에서의 삭제는 이렇게 하시면 됩니다.
$ whenever -c