diff --git a/config/initializers/action_mailer.rb b/config/initializers/action_mailer.rb index 67a821d4..77ee2e8c 100644 --- a/config/initializers/action_mailer.rb +++ b/config/initializers/action_mailer.rb @@ -13,11 +13,13 @@ def notify_delivered end # Hook into the delivery process - self.register_observer(-> (message) { message.delivery_method.settings[:return_response] = true }) - self.register_interceptor(-> (message) { message }) - self.register_observer(-> (message) { - message.deliver_later unless Rails.env.test? - }) + # Remove problematic observer and interceptor + # self.register_observer(-> (message) { message.delivery_method.settings[:return_response] = true }) + # self.register_interceptor(-> (message) { message }) + # Remove problematic observer that causes recursion + # self.register_observer(-> (message) { + # message.deliver_later unless Rails.env.test? + # }) class << self attr_accessor :delivery_notification_method diff --git a/config/initializers/letter_opener_sidekiq.rb b/config/initializers/letter_opener_sidekiq.rb new file mode 100644 index 00000000..bc987821 --- /dev/null +++ b/config/initializers/letter_opener_sidekiq.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +# Special configuration for letter_opener with Sidekiq in staging +if Rails.env.staging? + require 'letter_opener_web' + + # Ensure delivery_method settings are accessible in Sidekiq threads + Sidekiq.configure_server do |config| + config.client_middleware do |chain| + chain.add(Class.new do + def call(worker_class, job, queue, redis_pool) + if worker_class == 'ActionMailer::MailDeliveryJob' && Rails.application.config.action_mailer.delivery_method == :letter_opener_web + # Ensure ActionMailer's settings are correctly set in the Sidekiq context + ActionMailer::Base.delivery_method = :letter_opener_web + end + yield + end + end) + end + end +end