2016-08-18 2 views
1

Ich habe eine Rails-Engine, die einen Befehl namens myengine create. Dieser Befehl generiert eine vollständige Rails-Anwendung, in die myengine bereits integriert ist. Der Befehl ruft rails new ... auf, um die App zu generieren. Alles funktioniert gut, solange ich diesen Befehl außerhalb des Engine-Ordners ausführen. Wenn ich es jedoch innerhalb des Engine-Ordners ausführe, bricht es ab, weil es den -Befehl innerhalb der Engine anstelle des regulären rails-Befehls ausführt, der auf dem System installiert ist. Die bin/rails innerhalb des Engine-Ordners ist konfiguriert, um mit Engines zu arbeiten, so dass es keinen rails new Befehl hat.Wie "Schienen neu .." von innerhalb einer Maschine laufen lassen

Ich versuche automatische Tests zu schreiben, die den myengine create Befehl innerhalb der Engine ausführen, um die Ausgabe zu validieren. Wenn ich irgendwo innerhalb des Engine-Verzeichnisses bin, schlägt der Aufruf von rails new fehl.

Ich habe versucht, die genaue rails Befehl wie "/home/me/.rvm/gems/ruby-2.3.1/bin/rails new ...", aber dies funktioniert nicht.

Die einzige Problemumgehung, die ich hatte, ist, die Anwendung außerhalb des Engine-Ordners mit Dir.chdir oder Thors inside Methode zu erstellen. Ich kann dort dagegen testen oder den neu erzeugten App-Ordner wieder in meinen spec/ Ordner verschieben. Es funktioniert, aber es fühlt sich schlampig an. Es muss einen Weg geben, aus einer Engine eine neue zu generieren.

Antwort

0

Wenn jemand anderes dazu kommt, habe ich meinen Befehl zur Umbenennung von bin/rails in einen temporären neuen Namen verbessert, bevor er versucht hat, auszuführen. Dann der Befehl umbenannt es einmal rails new abgeschlossen.

Verwandte Themen