실패한 작업: Jobs::Jobs:Module에 대해 `cancel_scheduled_job' 메서드가 정의되지 않음

Jobs::ProcessPost 실행 중

명령줄에서 재현할 수 있습니다:

반면, 다음 방법으로 성공적으로 접근할 수 있습니다:

다음과 관련이 있을 것 같습니다:

해당 커밋에는 다음이 포함되어 있습니다:

이 컨텍스트에서 앞에 ::가 필요한 것일까요?

음, 앞에 ::를 붙이면 확실히 해결되긴 하겠지만… 그렇게 해야 하는 건 아니어야 하는데 :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의 이 라인들이 문제를 일으키는 것 같습니다. 주석 처리하면 문제가 해결됩니다.

좋은 소식은 개발 환경에서만 발생하는 문제라는 점입니다. 잡(job)의 파일 경로가 모듈 이름과 일치하지 않아서 발생하는 문제입니다. 정리하기 위한 PR을 올렸습니다:

리포트해 주셔서 감사합니다 @merefield

아, 그렇군요. 이상하네요. 프로덕션이 터지지 않은 이유가 설명이 되네요!

빠른 답변 감사합니다!!