Rails의 Cron 작업: When 실제 사용에 대한 간단한 가이드(이제 작업 포함)
whenever
를 사용하여 Rails에서 작업을 예약할 기회가 있었고 나중에 참조할 수 있도록 이 게시물을 작성하고 있습니다. Rails에서 정기적인 작업을 예약하는 다른 방법이 있다는 것을 알고 있지만 이것이 가장 간단한 방법 중 하나일 것입니다.참고: 가이드는 Linux 또는 MacOS 시스템용입니다.
크론 작업이란 무엇입니까?
Cron은 고정된 시간(예: 매분, 매시간, 매일 오후 3시)에 반복 작업을 실행할 수 있는 작업 스케줄러입니다.
작업은 crontab("cron table"의 줄임말)이라는 파일에 작성되며 일반적으로 다음 위치에 저장됩니다. /usr/bin/
Rails의 cron 작업에 항상 사용
Whenever
은 크론 작업을 설정하는 데 도움이 되는 보석입니다. 직접 crontab을 수동으로 편집하는 대신 Ruby 코드로 작업을 작성하여 crontab을 업데이트하도록 할 수 있습니다whenever
. schedule.rb
에서 수정합니다.
참고: 언급할 가치가 있는 한 가지는 실제 작업 자체(제 경우에는 배치 메시지를 주기적으로 전송)가 crontab 또는 crontab에 쓰기 위한 Rails 파일schedule.rb
에 작성되어서는 안 된다는 것입니다. 작업 자체는 Rake 작업으로 별도로 작성해야 합니다. 그런 다음 해당 Rake 작업을 크론 작업으로 정기적으로 예약할 수 있습니다.
단계
1. 언제든지 설치
앱Gemfile
에 포함하고 실행bundle
하여 설치합니다.
gem 'whenever', require: false
2. schedule.rb에서 cron 작업을 예약합니다.
config/schedule.rb
는 작업을 실행할 시기와 Rake 작업의 이름을 지정하는 파일입니다(다시 말하지만 실제 작업은 별도의 파일에 작성해야 함).
Rails 앱 루트에서 다음을 실행하여 schedule.rb
파일을 생성합니다.
bundle exec wheneverize .
이제 schedule.rb
에 작업 세부 사항을 작성하십시오. 예를 들어 매분 Rake 작업batch:send_messages
을 실행하려는 경우:
every 1.minute do
rake 'batch:send_messages'
end
every 2.hours
및 every 1.day
등을 수행할 수도 있습니다.
3. crontab에 every 작업을 작성합니다.
whenever
가 crontab에 작업을 기록하도록 합니다.
bundle exec whenever --update-crontab
중요한Whenever
는 crontab에 쓸 때 Rails 앱 환경을 고려합니다. development
환경을 사용하는 경우 아래 옵션과 함께 명령을 실행합니다(기본값은 production
).
whenever --update-crontab --set environment='development'
참고로 다음 명령을 실행한 후 crontab이 다음과 같이 표시됩니다( RAILS_ENV
is development
).
# Begin Whenever generated tasks for: /Users/<USER>/<APPNAME>/config/schedule.rb at: 2019-01-14 18:15:41 +0900
* * * * * /bin/bash -l -c 'cd /Users/<USER>/<APPNAME> && RAILS_ENV=development bundle exec rake batch:send_messages --silent'
# End Whenever generated tasks for: /Users/<USER>/<APPNAME>/config/schedule.rb at: 2019-01-14 18:15:41 +0900
기타 명령
Whenever
은 크론 작업을 설정하는 데 도움이 되는 보석입니다. 직접 crontab을 수동으로 편집하는 대신 Ruby 코드로 작업을 작성하여 crontab을 업데이트하도록 할 수 있습니다whenever
. schedule.rb
에서 수정합니다.참고: 언급할 가치가 있는 한 가지는 실제 작업 자체(제 경우에는 배치 메시지를 주기적으로 전송)가 crontab 또는 crontab에 쓰기 위한 Rails 파일
schedule.rb
에 작성되어서는 안 된다는 것입니다. 작업 자체는 Rake 작업으로 별도로 작성해야 합니다. 그런 다음 해당 Rake 작업을 크론 작업으로 정기적으로 예약할 수 있습니다.단계
1. 언제든지 설치
앱
Gemfile
에 포함하고 실행bundle
하여 설치합니다.gem 'whenever', require: false
2. schedule.rb에서 cron 작업을 예약합니다.
config/schedule.rb
는 작업을 실행할 시기와 Rake 작업의 이름을 지정하는 파일입니다(다시 말하지만 실제 작업은 별도의 파일에 작성해야 함).Rails 앱 루트에서 다음을 실행하여
schedule.rb
파일을 생성합니다.bundle exec wheneverize .
이제
schedule.rb
에 작업 세부 사항을 작성하십시오. 예를 들어 매분 Rake 작업batch:send_messages
을 실행하려는 경우:every 1.minute do
rake 'batch:send_messages'
end
every 2.hours
및 every 1.day
등을 수행할 수도 있습니다.3. crontab에 every 작업을 작성합니다.
whenever
가 crontab에 작업을 기록하도록 합니다.bundle exec whenever --update-crontab
중요한
Whenever
는 crontab에 쓸 때 Rails 앱 환경을 고려합니다. development
환경을 사용하는 경우 아래 옵션과 함께 명령을 실행합니다(기본값은 production
).whenever --update-crontab --set environment='development'
참고로 다음 명령을 실행한 후 crontab이 다음과 같이 표시됩니다(
RAILS_ENV
is development
).# Begin Whenever generated tasks for: /Users/<USER>/<APPNAME>/config/schedule.rb at: 2019-01-14 18:15:41 +0900
* * * * * /bin/bash -l -c 'cd /Users/<USER>/<APPNAME> && RAILS_ENV=development bundle exec rake batch:send_messages --silent'
# End Whenever generated tasks for: /Users/<USER>/<APPNAME>/config/schedule.rb at: 2019-01-14 18:15:41 +0900
기타 명령
crontab -l
whenever task
의 crontab을 닦으십시오: bundle exec whenever --clear-crontab
4. 갈퀴 작업 만들기
Rake 작업은 특정 명명 규칙(네임스페이스 및 작업 이름)을 따릅니다. 네임스페이스는 특정 작업을 함께 그룹화하기 위한 것입니다. 예를 들어 아래의 경우 배치 작업이 여러 개인 경우 모두
batch
아래에 넣을 수 있습니다.lib/tasks/batch.rake
에서 Rake 작업을 위한 파일을 생성합니다. 다음 공식을 따릅니다.rails g task <NAMESPACE> <TASKNAME>
따라서
send_messages
네임스페이스에서 batch
작업을 생성하려면 터미널에 다음을 입력합니다.rails g task batch send_messages
이제 작업에 대한 임의의 설명인
desc
와 실행될 코드인 task
의 두 매개변수를 사용하는 작업을 작성합니다.예를 들어:
namespace :batch do
desc 'Send out batch messages'
task send_messages: :environment do
# The code to actually send our messages would go here
end
end
아래와 같이 명령줄에서 실행하여 Rake 작업을 테스트할 수 있습니다.
rails batch:send_messages
읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(Rails의 Cron 작업: When 실제 사용에 대한 간단한 가이드(이제 작업 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/risafj/cron-jobs-in-rails-a-simple-guide-to-actually-using-the-whenever-gem-now-with-tasks-2omi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)