module Mailings module PublicUrl module_function def options opts = Rails.application.config.action_mailer.default_url_options.to_h.symbolize_keys opts[:protocol] ||= protocol port = opts[:port].to_i opts.delete(:port) if port.zero? || default_port?(port) opts end def protocol return "https" if Rails.application.config.force_ssl return "https" if ENV["ASSUME_SSL"] == "true" "http" end def default_port?(port) (protocol == "https" && port == 443) || (protocol == "http" && port == 80) end end end