【发布时间】:2023-01-19 23:09:48
【问题描述】:
我已将我的 Rails 应用程序中的邮件传递更改为实现 deliver_later 而不是 deliver_now,并且遇到来自 ActiveJob 的错误消息。
旧机制是:
mail_collection.each &:deliver_now
新机制是:
mail_collection.each do |m|
m.deliver_later(wait_until: specified_time)
end
现在,当运行我的测试时,带有 deliver_later 方法的行抛出错误:
Minitest::UnexpectedError: ActiveJob::SerializationError: 不支持的参数类型:地址
如果我将
deliver_later更改为deliver_now并删除选项,问题就会消失。我已经检查了对象并验证它们是邮件消息,还通过调用m.method(:deliver_later)验证了它正在使用:<方法:ActionMailer::MessageDelivery#deliver_later(options=...) /usr/local/bundle/gems/actionmailer-6.1.7/lib/action_mailer/message_delivery.rb:98>
我已将
specified_time替换为Time.now以确保这不是根本原因,并且我遇到了同样的错误。我已经将 Sidekiq 更新到 7.0,因为我看到一些关于早期版本 Sidekiq 的类似问题的讨论,但没有爱。
任何关于在哪里寻找解决方案的建议将不胜感激。
【问题讨论】:
标签: ruby-on-rails testing actionmailer