From d6130cf6e2e287490f90b4774b96bb71c14053ba Mon Sep 17 00:00:00 2001 From: Julian Herrero Date: Wed, 30 Oct 2019 20:41:35 +0700 Subject: [PATCH] Add task to move force_ssl settings to secrets.yml Existing installations having their configuration settings in the capistrano shared folder needed this migration. --- config/deploy.rb | 6 +++--- lib/tasks/secrets.rake | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/config/deploy.rb b/config/deploy.rb index c3a875367..6dbbca2d4 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_secrets" + before :publishing, "smtp_and_ssl_secrets" after :publishing, "deploy:restart" after :published, "delayed_job:restart" @@ -131,11 +131,11 @@ task :setup_puma do end end -task :smtp_secrets do +task :smtp_and_ssl_secrets do on roles(:app) do within release_path do with rails_env: fetch(:rails_env) do - execute :rake, "secrets:smtp" + execute :rake, "secrets:smtp_and_ssl" end end end diff --git a/lib/tasks/secrets.rake b/lib/tasks/secrets.rake index 0b7ed7c6b..e3b19d265 100644 --- a/lib/tasks/secrets.rake +++ b/lib/tasks/secrets.rake @@ -1,13 +1,18 @@ namespace :secrets do - desc "Add SMTP settings to secrets.yml" - task smtp: :environment do - exit if Rails.application.secrets.smtp_settings - + desc "Add SMTP and SSL settings to secrets.yml" + task smtp_and_ssl: :environment do current_settings = { "mailer_delivery_method" => ActionMailer::Base.delivery_method.to_s, - "smtp_settings" => ActionMailer::Base.smtp_settings.stringify_keys + "smtp_settings" => ActionMailer::Base.smtp_settings.stringify_keys, + "force_ssl" => Rails.application.config.force_ssl } + settings_to_add = current_settings.select do |name, _| + Rails.application.secrets[name].nil? + end + + exit if settings_to_add.empty? + secrets = Rails.application.config.paths["config/secrets"].first stream = Psych.parse_stream(File.read(secrets)) nodes = stream.children.first.children.first @@ -16,7 +21,7 @@ namespace :secrets do child.is_a?(Psych::Nodes::Scalar) && child.value == Rails.env end - nodes.children[environment_index + 1].children.push(*Psych.parse(current_settings.to_yaml).children.first.children) + nodes.children[environment_index + 1].children.push(*Psych.parse(settings_to_add.to_yaml).children.first.children) File.open(secrets, "w") { |file| file.write stream.to_yaml } end