Gem 설정이 있는 Cron 작업 — Ruby On Rails

Cron 작업 소개

안녕하세요 여러분!. 이 게시물에서는 Ruby on Rails 애플리케이션에서 cron 작업을 사용하는 방법을 보여주는 간단한 가이드를 공유하고 싶습니다.



크론 직업이 무엇인가요?



크론 작업은 특정 시간(분, 일, 주 또는 월)에 실행되도록 예약된 프로세스입니다. Unix 시스템에서는 cron 도구를 사용하여 이러한 유형의 프로세스를 실행하고 관리할 수 있습니다. cron 도구를 실행할 프로세스의 정보는 crontab이라는 파일에 저장됩니다.

크론 작업 사용의 예는 다음과 같습니다.
  • 보고서를 생성합니다. 예: 전자 상거래 애플리케이션의 일일 결제 보고서.
  • 사용자에게 미리 알림을 보냅니다. 예를 들어 전자 상거래 애플리케이션에서 제안 알림을 보냅니다.

  • 1단계: gem( https://github.com/javan/whenever )을 설치할 때마다 설치합니다.

    # Cronjobs
    gem 'whenever', require: false
    

    2단계:프로젝트로 이동하여 실행

    cd /my-great-project
    bundle exec wheneverize .
    

    schedule.rb에 로그 파일 경로 추가

    # schedule.rb
    set :output, {:error => “log/cron_error_log.log”, :standard => “log/cron_log.log”}
    

    3단계: 레이크 태스크 생성

    touch lib/tasks/first_sample_task.rake
    

    우리의 작업에서 우리는 단순히 메시지를 인쇄할 것입니다.

    # lib/tasks/first_sample_task.rake
    desc 'First Whenever rake task'
    task first_sample_task: :environment do
      Rails.logger.info "First Sample Task"
    end
    

    Rails 애플리케이션의 rake 작업을 보려면 다음 명령을 사용할 수 있습니다.

    # See all tasks
    bundle exec rake --tasks
    

    4단계: 일정 파일에 추가

    크론 작업의 구조는 다음과 같습니다.

    .--------------- minute (0-59) 
    |  .------------ hour (0-23)
    |  |  .--------- day of month (1-31)
    |  |  |  .------ month (1-12)
    |  |  |  |  .--- day of week (0-6) (sunday=0 or 7)  
    |  |  |  |  |
    *  *  *  *  *  command to execute
    

    15분마다 실행되도록 크론 작업을 정의하는 방법의 예

    # schedule.rb
    every '*/15 * * * *' do
      rake 'first_sample_task'
    end
    

    For Reference
    https://crontab.guru/#/15_*_



    5단계: crontab 업데이트

    whenever --update-crontab
    
    # crontab file 
    */5 * * * * /bin/bash -l -c 'cd OUR_PROJECT_PATH && RAILS_ENV=production bundle exec rake first_sample_task - silent >> log/cron_log.log 2>> log/cron_error_log.log'
    

    로그를 보면 다음을 볼 수 있습니다.

    # log/cron_log.log
    I, [2022-05-04T18:05:02.890007 #98613]  INFO -- : First Sample Task
    I, [2022-05-04T18:20:02.944687 #98649]  INFO -- : First Sample Task
    

    6 단계: Crontab 중요 명령

    # get crontab list
    crontab -l
    
    # delete all crontab
    crontab -r
    
    # edit crontab
    crontab -e
    

    7단계:배포를 위해 capfile 및 deploy.rb의 파일을 가져올 때마다 필요합니다.

    # capfile
    require 'whenever/capistrano'
    
    # deploy.rb
    require 'whenever'
    require 'whenever/capistrano'
    

    이 가이드가 귀하와 귀하의 팀에 도움이 되었다면 다른 사람들과 공유하십시오!

    좋은 웹페이지 즐겨찾기