gem.file

gem 'whenever', require: false

$ bundle install

初期設定

$ bundle exec wheneverize .

→config/schedule.rbを作成する

config/schedule.rb


require File.expand_path(File.dirname(__FILE__) + '/environment')

# cronを実行する環境変数
# ENV['RAILS_ENV']で環境を判断し、何も入っていなければ入っていなければ:developmentをrails_envに代入
rails_env = ENV['RAILS_ENV'] || :development

# cronを実行する環境変数をセット
set :environment, rails_env

# cronのログの吐き出し場所
set :output, "#{Rails.root}/log/cron.log"

# 1分ごとにrakeタスクの呼び出し 時間単位ならhours
every 1.minutes do
  rake 'task_update:change_state'
end

wheneverの設定の確認

bundle exec whenever

下のようにrakeタスクが表示されることと、RAILS_ENVが設定されて欲しい環境かどうかを確認すること(今回はdevelopment)

0 * * * * /bin/bash -l -c 'cd /Users/user_name/workspace/rails/task_leaf && RAILS_ENV=development bundle exec rake task_update:change_state --silent >> 
/Users/user_name/workspace//rails/task_leaf/log/cron.log 2>&1'

crontabに設定を反映

bundle exec whenever --update-crontab

これで設定は完了です。