플러그인에 정의된 rake 태스크를 로드하는 기능에 대한 지원이 있나요?

Discourse 포럼에서 사용자 정의 작업을 실행할 수 있어야 합니다. 플러그인에서 정의된 rake 작업을 로드하여 프로덕션 환경에서 사용할 수 있는 방법이 있을까요?

이렇게 하면 작동할 것 같습니다. 플러그인에서 코어에 있는 위치와 동일한 디렉토리에 파일을 배치하면 됩니다.

과거에는 다른 작업이 실행된 후에 실행되는 rake 작업을 만들어 본 적은 있지만, 독립적인 작업은 만들어 본 적이 없습니다.

네, 동작합니다. 처음에는 내 환경에서는 작동하지 않는 것 같아서 질문을 했는데, 다시 시도해보니 처음부터 잘 동작하네요.

플러그인의 lib/tasks에 rake 태스크를 추가했습니다. 혹시 이 문제를 마주하는 다른 분들을 위해 이렇게 하면 된다는 걸 확인해 두는 게 좋을 것 같아서 공유합니다.

lib/tasks의 rake 태스크가 두 번 실행되는 문제를 경험하신 분이 계신가요? 저희 프로젝트에서는 rake subscriptions:procourse_convert를 실행할 때 두 번 실행되는 것 같습니다.

https://github.com/ryan-hyer/discourse-subscriptions/blob/master/lib/tasks/procourse_memberships.rake

안녕하세요 @kimardenmiller, rake 태스크가 두 번 실행되는 이유에 대한 답을 찾았나요?

같은 메서드를 두 곳에 선언한 것과 관련이 있을 것 같아서, 이로 인해 두 번 실행된 것 같습니다. 확인은 안 했지만, 해당 부분을 점검해 보세요.

수정: 이게 어떻게 발생하는지 파악한 것 같습니다.

약속(convention)을 따르지 않는 것이 아니라, 오히려 너무 많이 따르는 것 같습니다.

문제는 plugin.rb에서 rake 파일을 참조하면 두 번 실행되는 것 같습니다. 하지만 rake 태스크는 참조하지 않아도 포함되므로 초기화 중에 로드할 필요가 없습니다.

@frank.manuel

제 지식으로는 여기에는 Discourse에 특화된 로직이 없습니다. 플러그인에 대해 ::Rails::Engine을 정의했다면, 태스크 파일이 자동 로드(autoload)되는 것 같습니다.