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

时间:2013-10-03 11:29:17

标签: ruby-on-rails ruby json sidekiq

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

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

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

1 个答案:

答案 0 :(得分:8)

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

更深层次的问题是sidekiq只支持本机JSON类型,因此在尝试将对象传递给sidekiq时,它会抛出任何更复杂的东西,例如ruby对象。有关详细信息,请参阅this thread

  

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

相关问题