尝试发送电子邮件时sidekiq_mailer错误

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

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

有谁知道为什么会这样?

根据对resque问题的评论,我能够解决类似的问题,我试图将整个对象传递给worker的perform操作,而不仅仅是对象id。 我重构了我的代码以传递一个id并在worker中自己获取必要的对象。

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

传递给perform_async的参数必须由简单的JSON数据类型组成:string,integer,float,boolean,null,array和hash。 Sidekiq客户端API使用JSON.dump将数据发送到Redis。 Sidekiq服务器从Redis中提取JSON数据并使用JSON.load将数据转换回Ruby类型以传递给您的perform方法。 不要传递符号或复杂的Ruby对象(如日期或时间!),因为这些对象无法正确转储/加载往返。