Rake - Tasks dauert etwa 18 Sekunden. Dies ist genau die Zeit, die benötigt wird, um alle Aufgaben zu laden. Daher wird jede Aufgabe, die ich definiere, mindestens so lange dauern, bis sie ausgeführt wird:
%Vor%Mein Rakefile:
%Vor%Irgendeine Idee warum Rake zu viel Zeit braucht? Danke
Diese Lösung funktionierte für mich: schnellere Rake-Aufgaben in Rails .
Ich musste eine kleine Variante machen, wo ich ein lib/tasks/no_rails
Verzeichnis erstellt habe und alle Rake-Dateien, die keine Rails benötigen, dort einfügt und nur die mit der oben genannten Methode geladen.
Ich mag die Lösung, die Pratik für den allgemeinen Fall des Ladens von Schienen für Aufgaben, die sie brauchen, und nicht für diejenigen, die dies nicht tun, für jede Rechenaufgabe erwähnt, ohne sich vorher daran erinnern zu müssen.
Eine weniger invasive Methode zum Ausführen einer Rake-Task, die keine Rails benötigt, ist die Verwendung der Option -f
rake, um Rake zu sagen, eine bestimmte Rakefile zu verwenden. Auf diese Weise wird Rake nicht in allen Rails nach Rake-Aufgaben suchen.
Wenn Sie beispielsweise davon ausgehen, dass sich Ihre oben genannte Aufgabe in einer Datei namens Rakefile auf der obersten Ebene Ihres Projekts befindet und Ihre Rakefile nichts tut, was Rails wie require File.expand_path('../config/application', __FILE__)
lädt, können Sie Folgendes tun:
und es sollte Ihre Spezifikationsaufgabe viel schneller ausführen. Probieren Sie $ time rake -f Rakefile -T
; Ich habe das mit einem Rails-unabhängigen Rakefile von mir gemacht und habe:
Der Nachteil ist, dass Sie daran denken müssen, diese Option jedes Mal anzugeben, und nicht, wenn Sie eine Rake-Aufgabe von Rails wie rake db:migrate
ausführen möchten.
Die gesamte Rails-Umgebung muss geladen werden, daher nehmen auch einfache Rake-Tasks wie rake --tasks
etwas Zeit in Anspruch. Das Öffnen einer Konsole mit rails console
oder script/console
dauert ähnlich. Sie können versuchen, Ruby oder Rails zu hacken beschleunigen Sie Rake , aber zu viel Optimierung kann schlecht sein, wenn Sie später zu einer neueren Version wechseln möchten. Da die Schienenumgebung geladen werden muss, Aufräumen kann ebenfalls helfen.