首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails测试触发Sidekiq警告

Rails测试触发Sidekiq警告
EN

Stack Overflow用户
提问于 2022-03-02 15:36:16
回答 3查看 1.3K关注 0票数 2

我在Sidekiq工作人员中有以下方法:

代码语言:javascript
运行
复制
  def self.schedule_edits(course:, editing_user:, enrollment_results:)
    puts editing_user.id
    perform_async(course.id, editing_user.id, enrollment_results)
  end

我有一个控制器测试,当它调用此代码时,会引发以下警告:

代码语言:javascript
运行
复制
WARN: Job arguments to MassEnrollmentWorker do not serialize to JSON safely. This will raise an error...

我已经阅读了警告这里,我猜enrollment_results是一个令人反感的论点。但是,当我运行测试和输出enrollment_results时,我看到了以下内容:

代码语言:javascript
运行
复制
{"FirstUser"=>{:success=>"User added to course."}, "SecondUser"=>{:success=>"User added to course."}, "NotARealUserOnWikipedia"=>{:failure=>"Not an existing user."}

这似乎是一个有效的散列,那么问题是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-02 17:16:58

注意有关符号的部分。

https://github.com/mperham/sidekiq/wiki/Best-Practices#1-make-your-job-parameters-small-and-simple

传递给perform_async的参数必须由简单的JSON数据类型组成:字符串、整数、浮点数、布尔值、null(零)、数组和哈希。这意味着你不能使用红宝石符号作为参数。

票数 2
EN

Stack Overflow用户

发布于 2022-03-02 19:10:12

为了子孙后代,我改变了哈希构建的方式,从而修正了这个问题:

代码语言:javascript
运行
复制
{"FirstUser"=>{:success=>"User added to course."}, "SecondUser"=>{:success=>"User added to course."}, "NotARealUserOnWikipedia"=>{:failure=>"Not an existing user."}

为了..。

代码语言:javascript
运行
复制
{"FirstUser"=>{"success"=>"User added to course."}, "SecondUser"=>{"success"=>"User added to course."}, "NotARealUserOnWikipedia"=>{"failure"=>"Not an existing user."}
票数 0
EN

Stack Overflow用户

发布于 2022-07-14 17:30:52

在我的情况下,我只需要将散列表的格式更改为字符串火箭=>样式。

发自:

代码语言:javascript
运行
复制
 Sidekiq::Client.push('class' => 'RecordOrderJob', 'args' => { foo: 'bar' })

至:

代码语言:javascript
运行
复制
Sidekiq::Client.push('class' => 'RecordOrderJob', 'args' => { 'foo' => 'bar' })

只需避免散列中的符号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71325322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档