2010-12-23 5 views
3

Wie kann man entscheiden, ob Funktionalität setzen in einem generator wie Skript oder ein rake (oder thor AufgabeRuby on Rails: script/my_script vs Rake my_namespace: my_task

Einige Beispiele:

In thinking-sphinx, rake ts:start den sphinx Daemon starten. aber in delayed_job wird scipt/delayed_job start den Daemon starten. Mehr oder weniger gleiche Funktionalität (scheinbar) aber unterschiedliche Ansätze.

es irgendwelche offensichtlichen Gründen für die Wahl zwischen den beiden, d. h. warum wurde script/generate model gewählt, zum Beispiel rake generate:model

Antwort

1

In der Vergangenheit war es eine eher subjektive Angelegenheit. Aber heute hat Rails 3 nur noch eine Datei im Skriptverzeichnis (rails), daher ist es nicht der bevorzugte Ort, um Skripte zu erstellen.

Wenn Sie ein Juwel haben, das eine oder mehrere Rake-Aufgaben für eine Rails-App definieren muss, fügen Sie dem Juwel einen Railtie hinzu (Railtie docs) und verwenden Sie die Methode rake_tasks.

0

Ich entscheide zwischen den beiden basierend darauf, ob ich die gesamte Schiene Umgebung/App für das Skript laden muss. Wenn ja, dann mache ich es zu einer Rake-Aufgabe.

Zum Beispiel, wenn mein Skript auf Datenbankobjekte zugreifen muss, oder Code, den ich in meiner App verwende, dann mache ich es sicher zu einer Rake-Aufgabe. Ansonsten wird es einfach in /script laufen, es wird viel schneller laufen. Wenn Sie bemerken, Dinge wie script/generate müssen nicht auf Ihre Rails App aussehen, und so sind keine Rake-Aufgaben.