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

Tom*_*Tom 2 ruby json ruby-on-rails sidekiq

我在我的应用程序中添加了宝石(2.15.0)sidekiqsidekiq_mailer(0.0.6).当我尝试发送电子邮件时,我收到:

NoMethodError (undefined method `key?' for #<JSON::Ext::Generator::State:0x007f1b......
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

the*_*ick 8

根据这个关于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对象(如Date或Time!),因为这些对象无法在转储/加载往返中正常运行.