ruby-on-rails - 尝试发送电子邮件时出现 sidekiq_mailer 错误

标签 ruby-on-rails ruby json sidekiq

我在我的应用程序中添加了 gem sidekiq (2.15.0) 和 sidekiq_mailer (0.0.6)。当我尝试发送电子邮件时,我收到:

NoMethodError (undefined method `key?' for #<JSON::Ext::Generator::State:0x007f1b......

有人知道为什么会这样吗?

最佳答案

根据 this comment on a resque issue我能够解决一个类似的问题,我试图将整个对象传递给工作人员的 perform 操作,而不仅仅是对象 ID。我重构了我的代码以仅传递一个 id 并在 worker 中获取必要的对象。

更深层次的问题是 sidekiq 只支持原生 JSON 类型,因此在尝试将对象传递给 sidekiq 时,它会抛出任何更复杂的东西,比如 ruby​​ 对象。参见 this thread有关更多详细信息和文档:

The arguments you pass to perform_async must be composed of simple JSON datatypes: string, integer, float, boolean, null, array and hash. The Sidekiq client API uses JSON.dump to send the data to Redis. The Sidekiq server pulls that JSON data from Redis and uses JSON.load to convert the data back into Ruby types to pass to your perform method. Don't pass symbols or complex Ruby objects (like Date or Time!) as those will not survive the dump/load round trip correctly.

关于ruby-on-rails - 尝试发送电子邮件时出现 sidekiq_mailer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19158057/

相关文章:

ruby-on-rails - link_to与动态:class样式在 rails ?

ruby-on-rails - 未为 accepts_nested_attributes_for 触发观察者和回调

javascript - JSON.parse 到对象数组

json - Powershell-使用ConvertTo-Json保留所有Enum属性的文本

java - 使用 Java API 动态创建 Json 字符串?

ruby-on-rails - Rails link_to with font-awesome 和外部 url

ruby-on-rails - 设计 - 如果用户未登录,则重定向到登录后点击的用户

ruby-on-rails - Ruby 通用文件系统库

ruby - 条件下所有可能的排列

ruby - 如何从 MD5 摘要中获取 UTF-8 字符串?