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.