Skip to content

Commit e9ac7c2

Browse files
committed
fix: properly setup mail config in production env
1 parent d6aa767 commit e9ac7c2

File tree

2 files changed

+37
-27
lines changed

2 files changed

+37
-27
lines changed

variants/backend-base/config/environments/production.rb

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,37 @@
2727
config.force_ssl = ENV.fetch("RAILS_FORCE_SSL", "true").downcase != "false"
2828
RUBY
2929

30-
# TODO: it looks like these options are now spread across the config
31-
insert_into_file! "config/environments/production.rb",
32-
after: /# config\.action_mailer\.raise_deliv.*\n/ do
33-
<<-RUBY
34-
35-
# Production email config
36-
config.action_mailer.raise_delivery_errors = true
37-
config.action_mailer.default_url_options = {
38-
host: "#{TEMPLATE_CONFIG.production_hostname}",
39-
protocol: "https"
40-
}
41-
config.action_mailer.asset_host = "https://#{TEMPLATE_CONFIG.production_hostname}"
30+
gsub_file! "config/environments/production.rb",
31+
"# config.action_mailer.raise_delivery_errors = false",
32+
"config.action_mailer.raise_delivery_errors = true"
4233

43-
config.action_mailer.smtp_settings = {
44-
address: ENV.fetch("SMTP_HOSTNAME"),
45-
port: ENV.fetch("SMTP_PORT", 587),
46-
enable_starttls_auto: true,
47-
user_name: ENV.fetch("SMTP_USERNAME"),
48-
password: ENV.fetch("SMTP_PASSWORD"),
49-
authentication: "login",
50-
domain: "#{TEMPLATE_CONFIG.production_hostname}"
51-
}
34+
gsub_file! "config/environments/production.rb",
35+
'config.action_mailer.default_url_options = { host: "example.com" }',
36+
"config.action_mailer.default_url_options = { host: \"#{TEMPLATE_CONFIG.production_hostname}\", protocol: \"https\" }"
5237

53-
RUBY
54-
end
38+
gsub_file! "config/environments/production.rb",
39+
<<~RUBY
40+
# Specify outgoing SMTP server. Remember to add smtp/* credentials via rails credentials:edit.
41+
# config.action_mailer.smtp_settings = {
42+
# user_name: Rails.application.credentials.dig(:smtp, :user_name),
43+
# password: Rails.application.credentials.dig(:smtp, :password),
44+
# address: "smtp.example.com",
45+
# port: 587,
46+
# authentication: :plain
47+
# }
48+
RUBY,
49+
<<-RUBY
50+
config.action_mailer.asset_host = "https://#{TEMPLATE_CONFIG.production_hostname}"
51+
config.action_mailer.smtp_settings = {
52+
address: ENV.fetch("SMTP_HOSTNAME"),
53+
port: ENV.fetch("SMTP_PORT", 587),
54+
enable_starttls_auto: true,
55+
user_name: ENV.fetch("SMTP_USERNAME"),
56+
password: ENV.fetch("SMTP_PASSWORD"),
57+
authentication: "login",
58+
domain: "#{TEMPLATE_CONFIG.production_hostname}"
59+
}
60+
RUBY
5561

5662
gsub_file! "config/environments/production.rb",
5763
'ENV.fetch("RAILS_LOG_LEVEL", "info")',
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1+
gsub_file! "config/environments/test.rb",
2+
'config.action_mailer.default_url_options = { host: "example.com" }',
3+
'config.action_mailer.default_url_options = { host: "localhost:3000" }'
4+
15
insert_into_file! \
26
"config/environments/test.rb",
37
after: /config\.action_mailer\.delivery_method = :test\n/ do
48
<<-RUBY
59
610
# Ensure mailer works in test
711
config.action_mailer.raise_delivery_errors = true
8-
config.action_mailer.default_url_options = { host: "localhost:3000" }
912
config.action_mailer.asset_host = "http://localhost:3000"
10-
11-
# Raise an error if we try and look up a missing translation
12-
config.i18n.raise_on_missing_translations = true
1313
RUBY
1414
end
1515

16+
gsub_file! "config/environments/test.rb",
17+
"# config.i18n.raise_on_missing_translations = true",
18+
"config.i18n.raise_on_missing_translations = true"
19+
1620
gsub_file! "config/environments/test.rb",
1721
"config.action_controller.raise_on_missing_callback_actions = true",
1822
"# config.action_controller.raise_on_missing_callback_actions = true"

0 commit comments

Comments
 (0)