Entweder /tasks
und lib/tasks
sind ein guter Ort. Ich benutze /tasks
, wenn die Aufgaben zum Arbeiten oder Verwalten des Gem selbst verwendet werden sollen, verwende ich lib/tasks
, wenn die Aufgaben von Gem-Benutzern geladen werden sollen.
Dies liegt daran, dass Benutzer möglicherweise ein Problem beim Laden von Ruby-Dateien außerhalb des Ordners lib
haben, der automatisch an den Ladepfad angehängt wird, wenn der Gem benötigt wird.
Außerdem empfehle ich Ihnen, die * .rake Erweiterung zu verwenden. Heutzutage assoziiert fast jede IDE eine Erweiterung von Ruby-Dateien mit .rake
, und die fortschrittlichste IDE kann den Inhalt sogar als Rake-Skripte analysieren. Die Erweiterung ist auch für Entwickler eine bessere Wahl, da Sie einen sofortigen Überblick über den Inhalt der Datei geben können.
Über Ihre zweite Frage, derzeit gibt es keine Möglichkeit, Rails Ihre Rake-Aufgaben zu laden, wenn das Plugin als Gem verpackt ist. Sie müssen die Rake-Datei in Ihre Anwendung (in eine andere Rake-Datei oder in die Haupt-Rake-Datei) aufnehmen oder die Rake-Aufgaben in Ihrem Projekt klonen.
Wenn Sie das Plug-in im Lieferantenordner installieren, werden alle Dateien *.rake
in den Verzeichnissen tasks und lib/tasks automatisch durch die folgenden zwei Zeilen in den Rails-Bereich geladen.
Dir["#{RAILS_ROOT}/vendor/plugins/*/tasks/**/*.rake"].sort.each { |ext| load ext }
Dir["#{RAILS_ROOT}/vendor/plugins/*/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
Sollte weiter verfolgen eine bessere Antwort- Ich schlug meinen Kopf an der Wand, wenn Sie versuchen, facebooker Arbeit zu bekommen- das ist als ein Juwel, aber es funktioniert nicht, weil alle Rake Aufgabe Abhängigkeiten im Grunde tot sind. –
das hat mir geholfen: http://blog.nathanumbert.com/2010/02/rails-3-loading-rake-tasks-from-gem.html – User