From 71832b5ff19ba025aedc2e7371fa60607c23ce98 Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 11 Sep 2015 13:26:31 +0200 Subject: [PATCH 1/6] adds whenever --- Gemfile | 1 + Gemfile.lock | 4 ++++ config/schedule.rb | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 config/schedule.rb 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/schedule.rb b/config/schedule.rb new file mode 100644 index 000000000..de75cf9d4 --- /dev/null +++ b/config/schedule.rb @@ -0,0 +1,20 @@ +# 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 From 44b5ea601866e9b77af299fe75870d06ff13ec63 Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 11 Sep 2015 14:23:41 +0200 Subject: [PATCH 2/6] first try at integrating whenever and capistrano --- config/deploy.rb | 5 +++++ config/deploy/preproduction.rb | 2 +- config/deploy/production.rb | 2 +- config/deploy/staging.rb | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config/deploy.rb b/config/deploy.rb index f09c199f9..fe93826a1 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,3 +1,8 @@ +set :whenever_command, "bundle exec whenever" +set :whenever_environment, defer { stage } +set :whenever_roles, [ :cron ] +require 'whenever/capistrano' + # config valid only for current version of Capistrano lock '3.4.0' 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) From 054f3b94e5adb28a9c4c500cef4f5ac08349f6ef Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 11 Sep 2015 17:32:10 +0200 Subject: [PATCH 3/6] uses -> instead of refer --- config/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index fe93826a1..de48908d2 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,5 +1,5 @@ set :whenever_command, "bundle exec whenever" -set :whenever_environment, defer { stage } +set :whenever_environment, -> { stage } set :whenever_roles, [ :cron ] require 'whenever/capistrano' From 74d07d337de3753e735d5ff373dfdec457cbd549 Mon Sep 17 00:00:00 2001 From: kikito Date: Sat, 12 Sep 2015 08:45:00 +0200 Subject: [PATCH 4/6] adds a dummy task to schedule.rb --- config/schedule.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/schedule.rb b/config/schedule.rb index de75cf9d4..308cdc69c 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -18,3 +18,7 @@ # end # Learn more: http://github.com/javan/whenever + +every 1.minute do + command "date > ~/cron-test.txt" +end From 05bfaa5c30a823f4cf6e554e09a07e12388b2486 Mon Sep 17 00:00:00 2001 From: kikito Date: Sat, 12 Sep 2015 08:56:47 +0200 Subject: [PATCH 5/6] move whenever require to Capfile --- Capfile | 1 + config/deploy.rb | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) 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/config/deploy.rb b/config/deploy.rb index de48908d2..26711fbff 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,8 +1,3 @@ -set :whenever_command, "bundle exec whenever" -set :whenever_environment, -> { stage } -set :whenever_roles, [ :cron ] -require 'whenever/capistrano' - # config valid only for current version of Capistrano lock '3.4.0' @@ -11,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 @@ -52,6 +46,10 @@ set(:config_files, %w( sidekiq.yml )) +set :whenever_command, "bundle exec whenever" +set :whenever_environment, -> { fetch(:stage) } +set :whenever_roles, [ :cron ] + namespace :deploy do # Check right version of deploy branch # before :deploy, "deploy:check_revision" From 1e59d3259ae53066db9e89efddada27c55856dcb Mon Sep 17 00:00:00 2001 From: kikito Date: Sat, 12 Sep 2015 09:01:16 +0200 Subject: [PATCH 6/6] removes unnecessary whenever setup --- config/deploy.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/deploy.rb b/config/deploy.rb index 26711fbff..5d4b15960 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -46,9 +46,7 @@ set(:config_files, %w( sidekiq.yml )) -set :whenever_command, "bundle exec whenever" -set :whenever_environment, -> { fetch(:stage) } -set :whenever_roles, [ :cron ] +set :whenever_roles, -> { :cron } namespace :deploy do # Check right version of deploy branch