This way we don't have to start it manually every time the server is restarted. Note if we start the application with `bin/rails s start -e production`, as we'd probably want to do so this task doesn't depend on the server we use, the application will crash when we restart it because it will be restarted in the development environment. Maybe this issue will be fixed in future versions of Rails and/or Puma. Also note we're passing `2` workers to delayed job, and this number must be the same number we use for the `delayed_job_workers` variable in capistrano. I haven't found a way to share this variable between whenever and capistrano.
48 lines
1.1 KiB
Ruby
48 lines
1.1 KiB
Ruby
# Use this file to easily define all of your cron jobs.
|
|
#
|
|
# It's helpful, but not entirely necessary to understand cron before proceeding.
|
|
# http://en.wikipedia.org/wiki/Cron
|
|
|
|
# Example:
|
|
#
|
|
# set :output, "/path/to/my/cron_log.log"
|
|
#
|
|
# every 2.hours do
|
|
# command "/usr/bin/some_great_command"
|
|
# runner "MyModel.some_method"
|
|
# rake "some:great:rake:task"
|
|
# end
|
|
#
|
|
# every 4.days do
|
|
# runner "AnotherModel.prune_old_records"
|
|
# end
|
|
|
|
# Learn more: http://github.com/javan/whenever
|
|
|
|
every 1.minute do
|
|
command "date > ~/cron-test.txt"
|
|
end
|
|
|
|
every 1.day, at: "5:00 am" do
|
|
rake "-s sitemap:refresh"
|
|
end
|
|
|
|
every 2.hours do
|
|
rake "-s stats:generate"
|
|
end
|
|
|
|
# Temporally not send dashboard's notifications
|
|
# every 1.day, at: "7:00 am" do
|
|
# rake "dashboards:send_notifications"
|
|
# end
|
|
|
|
every 1.day, at: "3:00 am", roles: [:cron] do
|
|
rake "votes:reset_hot_score"
|
|
end
|
|
|
|
every :reboot do
|
|
command "cd #{@path} && bundle exec puma -C config/puma/#{@environment}.rb"
|
|
# Number of workers must be kept in sync with capistrano's delayed_job_workers
|
|
command "cd #{@path} && RAILS_ENV=#{@environment} bin/delayed_job -n 2 restart"
|
|
end
|