Ich muss in der Lage sein, benutzerdefinierte Tasks gegen ein Discourse-Forum auszuführen. Gibt es eine Möglichkeit, Rake-Tasks zu laden, die in einem Plugin definiert sind, sodass diese in der Produktion verwendet werden können?
Ich denke, das sollte funktionieren. Legen Sie sie einfach im selben Verzeichnis im Plugin ab, in dem sie im Kern liegen.
Ich habe das in der Vergangenheit bereits mit der Erstellung einer Rake-Aufgabe gemacht, die nach einer anderen ausgeführt wird, aber ich habe noch keine eigenständige Aufgabe erstellt.
Ja, das funktioniert. Auf den ersten Blick schien es bei mir nicht zu klappen, daher habe ich die Frage gestellt. Ich habe es jedoch erneut versucht, und es hat sofort funktioniert.
Ich habe meine Rake-Aufgabe in lib/tasks in meinem Plugin hinzugefügt. Ich wollte nur bestätigen, dass dies auch für andere funktioniert, die darauf stoßen.
Hat jemand erlebt, dass Rake-Tasks in lib/tasks doppelt ausgeführt werden? Bei uns wird rake subscriptions:procourse_convert scheinbar zweimal ausgeführt.
Hallo @kimardenmiller, hast du jemals eine Antwort darauf gefunden, warum deine Rake-Aufgabe zweimal ausgeführt wird?
Ich denke, das könnte damit zu tun gehabt haben, dass dieselbe Methode an zwei Stellen deklariert wurde, was dazu geführt hat, dass sie zweimal ausgeführt wurde. Nicht verifiziert, aber prüf das bitte.
EDIT: Ich glaube, ich habe herausgefunden, wie das passiert.
Es folgt nicht wirklich der Konvention, oder vielleicht zu sehr.
Das Problem ist, wenn Sie die Rake-Datei in plugin.rb referenzieren, scheint sie zweimal ausgeführt zu werden, aber die Rake-Aufgabe ist enthalten, auch wenn Sie sie nicht referenzieren, sodass sie bei der Initialisierung nicht geladen werden muss.
Soweit ich weiß, gibt es hier keine Discourse-spezifische Logik. Ich vermute, dass die Task-Dateien automatisch geladen werden, wenn du eine ::Rails::Engine für dein Plugin definiert hast?