# 失敗したジョブ: Jobs::Jobs:Module の未定義メソッド \`cancel\_scheduled\_job\`

**URL:** <https://meta.discourse.org/t/failing-job-undefined-method-cancel-scheduled-job-for-jobs-module/228155>\
**Category:** Development\
**Created:** [2022 年 5 月 26 日午前 9:07 UTC](https://meta.discourse.org/t/failing-job-undefined-method-cancel-scheduled-job-for-jobs-module/228155 "2022-05-26T09:07:07Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)\
**Post date:** [2022 年 5 月 26 日午前 11:35 UTC](https://meta.discourse.org/t/failing-job-undefined-method-cancel-scheduled-job-for-jobs-module/228155/2 "2022-05-26T11:35:59Z")

</div>

うーん、先頭に `::` を追加すれば確かに解決するだろうけど、必須ではないはずだ 🤔

呼び出し元は `::Jobs::ProcessPost` の内部なので、Ruby はツリーを遡って探すはずだ。まず `::Jobs::ProcessPost::Jobs` を探し、次に `::Jobs::Jobs`、そして最終的には `::Jobs` モジュールを探すことになる。

君が見ているエラーは、何かが `::Jobs::Jobs` を定義していることを示唆している… それは奇妙だ！私の開発インスタンスで見てみよう：

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

```

🤯

どうやら、discourse-narrative-bot のこれらの行が問題を引き起こしているようだ。コメントアウトすると、問題は解決する。

> <https://github.com/discourse/discourse/blob/aabbc9e63e22a141edc527050281384cfe648e21/plugins/discourse-narrative-bot/plugin.rb#L13-L23>

良いニュースは、これが開発専用のものであることだ。ジョブのファイルパスとモジュールの名前が一致しないことに関連している。これを整理するための PR がこちらだ：

[https://github.com/discourse/discourse/pull/16924](https://github.com/discourse/discourse/pull/16924)

報告ありがとう @merefield

---

_[View the full topic](https://meta.discourse.org/t/failing-job-undefined-method-cancel-scheduled-job-for-jobs-module/228155)._
