From a08d42d3f8b178425ef86677fd55ff416f5d0637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 2 Nov 2019 21:58:28 +0100 Subject: [PATCH] Enable/disable delayed jobs in the secrets file While this is not a secret and in theory should be in a file under version control, currently the CONSUL installer disables delayed jobs by default, meaning we were keeping two versions of the delayed jobs configuration file, and some existing configurations have their settings defined in a file in capistrano's `shared` folder. So we're moving existing settings to the secrets file. --- config/deploy.rb | 6 +++--- config/initializers/delayed_job_config.rb | 5 ++++- config/secrets.yml.example | 3 +++ lib/tasks/secrets.rake | 7 ++++--- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/config/deploy.rb b/config/deploy.rb index f5c8c5ef7..1112257cb 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -47,7 +47,7 @@ namespace :deploy do after "deploy:migrate", "add_new_settings" - before :publishing, "smtp_and_ssl_secrets" + before :publishing, "smtp_ssl_and_delay_jobs_secrets" after :publishing, "deploy:restart" after :published, "delayed_job:restart" @@ -131,7 +131,7 @@ task :setup_puma do end end -task :smtp_and_ssl_secrets do +task :smtp_ssl_and_delay_jobs_secrets do on roles(:app) do within current_path do with rails_env: fetch(:rails_env) do @@ -141,7 +141,7 @@ task :smtp_and_ssl_secrets do begin execute "cp #{release_path}/#{tasks_file_path} #{current_path}/#{tasks_file_path}" - execute :rake, "secrets:smtp_and_ssl" + execute :rake, "secrets:smtp_ssl_and_delay_jobs" ensure execute "rm #{current_path}/#{tasks_file_path}" end diff --git a/config/initializers/delayed_job_config.rb b/config/initializers/delayed_job_config.rb index 151511dc6..3bcbfa4a1 100644 --- a/config/initializers/delayed_job_config.rb +++ b/config/initializers/delayed_job_config.rb @@ -1,8 +1,11 @@ if Rails.env.test? || Rails.env.development? Delayed::Worker.delay_jobs = false -else +elsif Rails.application.secrets.delay_jobs.nil? Delayed::Worker.delay_jobs = true +else + Delayed::Worker.delay_jobs = Rails.application.secrets.delay_jobs end + Delayed::Worker.destroy_failed_jobs = false Delayed::Worker.sleep_delay = 2 Delayed::Worker.max_attempts = 3 diff --git a/config/secrets.yml.example b/config/secrets.yml.example index 05870b09d..b9f227a46 100644 --- a/config/secrets.yml.example +++ b/config/secrets.yml.example @@ -33,6 +33,7 @@ staging: secret_key_base: "" server_name: "" force_ssl: true + delay_jobs: true rollbar_server_token: "" http_basic_username: "" http_basic_password: "" @@ -55,6 +56,7 @@ preproduction: # authentication: "plain" # enable_starttls_auto: true force_ssl: true + delay_jobs: true rollbar_server_token: "" http_basic_username: "" http_basic_password: "" @@ -82,6 +84,7 @@ production: # authentication: "plain" # enable_starttls_auto: true force_ssl: true + delay_jobs: true rollbar_server_token: "" http_basic_username: "" http_basic_password: "" diff --git a/lib/tasks/secrets.rake b/lib/tasks/secrets.rake index e3b19d265..25d66d3c3 100644 --- a/lib/tasks/secrets.rake +++ b/lib/tasks/secrets.rake @@ -1,10 +1,11 @@ namespace :secrets do - desc "Add SMTP and SSL settings to secrets.yml" - task smtp_and_ssl: :environment do + desc "Add SMTP, SSL and delay jobs settings to secrets.yml" + task smtp_ssl_and_delay_jobs: :environment do current_settings = { "mailer_delivery_method" => ActionMailer::Base.delivery_method.to_s, "smtp_settings" => ActionMailer::Base.smtp_settings.stringify_keys, - "force_ssl" => Rails.application.config.force_ssl + "force_ssl" => Rails.application.config.force_ssl, + "delay_jobs" => Delayed::Worker.delay_jobs } settings_to_add = current_settings.select do |name, _|