Skip to content

Instantly share code, notes, and snippets.

@marocchino
Created October 14, 2014 04:13
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marocchino/339af95e07d17ed2a87e to your computer and use it in GitHub Desktop.
Save marocchino/339af95e07d17ed2a87e to your computer and use it in GitHub Desktop.
whenever 사용하기

whenever 사용하기

요즘 이쪽 질문이 많이 올라오길레 정리해 봤습니다.

설치

$ 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment