失败的任务:Jobs::Jobs:Module 未定义方法 `cancel_scheduled_job'

Jobs::ProcessPost 期间

我可以在命令行中重现:

而我可以通过以下方式成功访问它:

可能与此有关:

包含:

在这种情况下,是否需要前导 ::

1 个赞

嗯,添加前导的 :: 确实可以解决问题……但它不应该是必需的 :thinking:

鉴于该调用来自 ::Jobs::ProcessPost 内部,Ruby 应该会向上查找。首先它会查找 ::Jobs::ProcessPost::Jobs,然后是 ::Jobs::Jobs,最后是 ::Jobs 模块。

你看到的错误表明有人定义了 ::Jobs::Jobs……这很奇怪!在我自己的开发实例上查看一下:

[1] pry(main)> Jobs::Jobs
=> Jobs::Jobs
[2] pry(main)> Jobs::Jobs.constants
=> [:RemapOldBotImages, :GrantBadges]

:exploding_head:

看起来 discourse-narrative-bot 中的这些行导致了问题。如果我注释掉它们,问题就解决了。

好消息是,这是仅在开发环境中出现的——与作业的文件路径与模块名称不匹配有关。这是一个清理问题的 PR:

感谢你的报告 @merefield

4 个赞

啊,是的,这很奇怪,也解释了为什么生产没有崩溃!

感谢您的快速回复!!

2 个赞

此主题已在 17 小时后自动关闭。不再允许回复。