diff --git a/Capfile b/Capfile index 3e0bb4329..372653a5e 100644 --- a/Capfile +++ b/Capfile @@ -10,6 +10,7 @@ require 'capistrano/rails/assets' require 'capistrano/rails/migrations' #require 'capistrano/passenger' require 'capistrano/delayed-job' +require 'whenever/capistrano' # Load custom tasks from `lib/capistrano/tasks` if you have any defined Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } diff --git a/Gemfile b/Gemfile index 05d9ec2e9..6840329ff 100644 --- a/Gemfile +++ b/Gemfile @@ -48,6 +48,7 @@ gem 'delayed_job_active_record' gem 'daemons' gem 'devise-async' gem 'newrelic_rpm' +gem 'whenever', require: false gem 'ahoy_matey', '~> 1.2.1' gem 'groupdate' # group temporary data diff --git a/Gemfile.lock b/Gemfile.lock index 6dfcba2b0..4814dc6af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -87,6 +87,7 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) + chronic (0.10.2) ckeditor (4.1.3) cocaine orm_adapter (~> 0.5.0) @@ -392,6 +393,8 @@ GEM websocket-driver (0.6.2) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) + whenever (0.9.4) + chronic (>= 0.6.3) xpath (2.0.0) nokogiri (~> 1.3) @@ -457,6 +460,7 @@ DEPENDENCIES uglifier (>= 1.3.0) unicorn web-console (~> 2.0) + whenever BUNDLED WITH 1.10.6 diff --git a/config/deploy.rb b/config/deploy.rb index f09c199f9..5d4b15960 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -6,7 +6,6 @@ def deploysecret(key) @deploy_secrets_yml.fetch(key.to_s, 'undefined') end - set :rails_env, fetch(:stage) set :rvm_ruby_version, '2.2.3' set :rvm_type, :user @@ -47,6 +46,8 @@ set(:config_files, %w( sidekiq.yml )) +set :whenever_roles, -> { :cron } + namespace :deploy do # Check right version of deploy branch # before :deploy, "deploy:check_revision" diff --git a/config/deploy/preproduction.rb b/config/deploy/preproduction.rb index 97759d6ce..a514f84eb 100644 --- a/config/deploy/preproduction.rb +++ b/config/deploy/preproduction.rb @@ -6,5 +6,5 @@ set :ssh_options, port: deploysecret(:ssh_port) set :stage, :preproduction set :rails_env, :preproduction -server deploysecret(:server1), user: deploysecret(:user), roles: %w(web app db importer) +server deploysecret(:server1), user: deploysecret(:user), roles: %w(web app db importer cron) server deploysecret(:server2), user: deploysecret(:user), roles: %w(web app db importer) diff --git a/config/deploy/production.rb b/config/deploy/production.rb index 8b784cf21..5e002af1a 100644 --- a/config/deploy/production.rb +++ b/config/deploy/production.rb @@ -7,6 +7,6 @@ set :stage, :production set :rails_env, :production #server deploysecret(:server1), user: deploysecret(:user), roles: %w(web app db importer) -server deploysecret(:server2), user: deploysecret(:user), roles: %w(web app db importer) +server deploysecret(:server2), user: deploysecret(:user), roles: %w(web app db importer cron) server deploysecret(:server3), user: deploysecret(:user), roles: %w(web app db importer) server deploysecret(:server4), user: deploysecret(:user), roles: %w(web app db importer) diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb index 0822fb9a1..c97bb9a7f 100644 --- a/config/deploy/staging.rb +++ b/config/deploy/staging.rb @@ -6,6 +6,6 @@ set :ssh_options, port: deploysecret(:ssh_port) set :stage, :staging set :rails_env, :staging -server deploysecret(:server), user: deploysecret(:user), roles: %w(web app db importer) +server deploysecret(:server), user: deploysecret(:user), roles: %w(web app db importer cron) diff --git a/config/schedule.rb b/config/schedule.rb new file mode 100644 index 000000000..308cdc69c --- /dev/null +++ b/config/schedule.rb @@ -0,0 +1,24 @@ +# 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