失敗したジョブ: 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 がこちらだ:

https://github.com/discourse/discourse/pull/16924

報告ありがとう @merefield

「いいね!」 4

ああ、そうなんですね、奇妙なことですが、プロダクションが爆発しなかった理由がわかりました!

迅速なご対応ありがとうございます!!

「いいね!」 2

このトピックは17時間後に自動的に閉じられました。新しい返信はもう許可されていません。