6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PadrinoでWheneverをつかってみる

Last updated at Posted at 2014-04-01

Wheneverとは

wheneverはcrontab管理用ライブラリ。

要はRubyでcronの設定が書けるライブラリ。

インストール

gem 'whenever', :require => false
$ bundle install

基本的な使いかた

schedule.rb作成

$ cd padrino_project
$ wheneverize .

これで、padrino_project/config/以下にschedule.rbが作成される。

設定

例えば、3時間毎にrakeタスクを動かしたいときは以下のように設定する。

schedule.rb
# 3時間毎に
every 3.hours do
  rake "my:rake:task"
end

job typeはrake以外にもcommand, runner, scriptが設定できる。

詳しくはREADMEに書いてある。

crontabに書き出す

$ whenever -w

確認

crontabに正しく書きだされているか確認する場合は

$ crontab -l

応用的な使い方

job typeの作成

デフォルトで設定されているjob typeはrake, command, runner, scriptだが、自分で新しいjob typeを作成できる。

padrino_rakeというjob typeを作成してみる。
export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\";の部分はrbenvを利用してる場合。

schedule.rb
job_type :padrino_rake, "export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\"; cd :path && :environment_variable=:environment bundle exec padrino rake :task --silent :output"

:path, :environment_variable, :environment, :task, :outputは変数。

変数に値をセット

上で出てきた変数に値をセットしてみる。

schedule.rb
job_type :padrino_rake, "export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\"; cd :path && :environment_variable=:environment bundle exec padrino rake :task --silent :output"

# setで変数に値をセットできる。
set :output, "/path/to/cron_log.log"

# 引数を追加することでも変数に値をセットできる。
# 第一引数は:taskにセットされる。
every 3.hours do
  padrino_rake "myrake:task", :environment_variable => "RACK_ENV", :environment => "development"
end

:task以外の変数への値のセットは省略可能で省略した場合はデフォルト値が設定される。

各変数のデフォルト値は

:path                 => wheneverが実行されたディレクトリ
:environment_variable => 'RAILS_ENV'
:environment          => 'production'

環境ごとに設定を変える場合

設定ファイルを環境ごとに分ける。

schedule_development.rb
job_type :padrino_rake, "export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\"; cd :path && :environment_variable=:environment bundle exec padrino rake :task --silent :output"

set :output, "/path/to/cron_log.log"
set :environment_variable, "RACK_ENV"
set :environment, "development"

every 3.hours do
  padrino_rake "myrake:task"
end
schedule_production.rb
job_type :padrino_rake, "export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\"; cd :path && :environment_variable=:environment bundle exec padrino rake :task --silent :output"

set :output, "/val/log/cron"
set :environment_variable, "RACK_ENV"
set :environment, "production"

every 3.hours do
  padrino_rake "myrake:task"
end

crontabに書き出す

$ whenever -w -f config/schedule_development.rb

参照

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?