読者です 読者をやめる 読者になる 読者になる

【Ruby】wheneverライブラリでcrontab管理ができる

Ruby

 

決められた時間に処理を実行したいってありますよね。

wheneverライブラリを使えばcrontab管理ができます。

管理できるものは以下になります。

・command  ※bashコマンド
・rake           ※rakeタスク
・runner       ※Railsのメソッド
・script         ※script

 

Gemfileの編集

gem 'whenever', :require => false

 

ライブラリのインストール

>bundle install

 

設定ファイルを作成(config/schedule.rb)

>wheneverize .

 

schedule.rbの編集

(1分ごとにTestモデルのgetメソッドを実行)

set :output, "log/crontab.log"      #出力先のログファイルの指定
set :environment, :development #ジョブの実行環境の指定(開発環境)
every 1.minutes do
  runner "Test.get"
end

 

modelクラスの修正

(実行したい内容を定義)

app/models/test.rb

require 'logger'
class Test
 def self.get
  log = Logger.new('log/cron.log')
  log.debug("OK")
 end
end

 

schedule.rbをcrontabの文法へ変換

>whenever

 

corntabの設定

whenever --update-crontab

 

これで設定は完了です。

1分後に「log/cron.log」に"OK"と出力されます。

 

 

▼コマンド
whenever --help                     ※ヘルプ
whenever                               ※schedule.rbをcrontabの文法へ変換
whenever --update-crontab    ※corntabの設定
whenever --clear-crontab       ※crontabの削除

 

▼指定できる時間 every ~ do

1.minutes
1.hours
1.days
:hour
:day
:month
:year
:reboot
:sunday
:weekend
:weekday

※crontab型の設定もできます。
(分・時・日・月・曜日)(毎月27日~31日の0:00に実行)
'0 0 27-31 * * '