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
これで設定は完了です。