Add task to move force_ssl settings to secrets.yml
Existing installations having their configuration settings in the capistrano shared folder needed this migration.
This commit is contained in:
committed by
Javi Martín
parent
df4f8810c5
commit
d6130cf6e2
@@ -47,7 +47,7 @@ namespace :deploy do
|
|||||||
|
|
||||||
after "deploy:migrate", "add_new_settings"
|
after "deploy:migrate", "add_new_settings"
|
||||||
|
|
||||||
before :publishing, "smtp_secrets"
|
before :publishing, "smtp_and_ssl_secrets"
|
||||||
|
|
||||||
after :publishing, "deploy:restart"
|
after :publishing, "deploy:restart"
|
||||||
after :published, "delayed_job:restart"
|
after :published, "delayed_job:restart"
|
||||||
@@ -131,11 +131,11 @@ task :setup_puma do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
task :smtp_secrets do
|
task :smtp_and_ssl_secrets do
|
||||||
on roles(:app) do
|
on roles(:app) do
|
||||||
within release_path do
|
within release_path do
|
||||||
with rails_env: fetch(:rails_env) do
|
with rails_env: fetch(:rails_env) do
|
||||||
execute :rake, "secrets:smtp"
|
execute :rake, "secrets:smtp_and_ssl"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
namespace :secrets do
|
namespace :secrets do
|
||||||
desc "Add SMTP settings to secrets.yml"
|
desc "Add SMTP and SSL settings to secrets.yml"
|
||||||
task smtp: :environment do
|
task smtp_and_ssl: :environment do
|
||||||
exit if Rails.application.secrets.smtp_settings
|
|
||||||
|
|
||||||
current_settings = {
|
current_settings = {
|
||||||
"mailer_delivery_method" => ActionMailer::Base.delivery_method.to_s,
|
"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
|
secrets = Rails.application.config.paths["config/secrets"].first
|
||||||
stream = Psych.parse_stream(File.read(secrets))
|
stream = Psych.parse_stream(File.read(secrets))
|
||||||
nodes = stream.children.first.children.first
|
nodes = stream.children.first.children.first
|
||||||
@@ -16,7 +21,7 @@ namespace :secrets do
|
|||||||
child.is_a?(Psych::Nodes::Scalar) && child.value == Rails.env
|
child.is_a?(Psych::Nodes::Scalar) && child.value == Rails.env
|
||||||
end
|
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 }
|
File.open(secrets, "w") { |file| file.write stream.to_yaml }
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user