Wie kann man ein Lisp-Programm aus einer Rails-Anwendung aufrufen?... Zum Beispiel, damit der Endbenutzer einen Textblock in die Rails-Webanwendung eingeben kann, der Text durch das Lisp-Programm verarbeitet wird und die Ergebnisse an die Rails-Anwendung zurückgegeben werden?
Antworten
Zu viele Anzeigen?Es gibt einige Möglichkeiten, die mir in den Sinn kommen:
-
Führen Sie das Lisp-Programm mit Prozess . Kommunizieren Sie mit dem Lisp-Programm über standard in, und lassen Sie das Lisp-Programm sein Ergebnis über stdout ausgeben.
-
Machen Sie dasselbe wie oben, aber kommunizieren Sie über benannte Rohre stattdessen. Lassen Sie Ihren Ruby-Code Daten schreiben en eine benannte Pipe, dann soll das Lisp-Programm aus dieser Pipe lesen und Daten schreiben aus über eine andere benannte Pipe, die Sie dann mit Ihrer Ruby-Anwendung lesen. Das Lisp-Programm kann entweder im Hintergrund als Daemon laufen, der auf Daten in der eingehenden Pipe prüft, oder Sie können es bei Bedarf mit den Ruby-Kommandozeilen-Dienstprogrammen (wie oben) starten.
-
Finden Sie eine Ruby-Lisp-Brücke. Ich habe keine Erfahrung mit einer solchen Brücke (noch weiß ich aus dem Stegreif, ob es überhaupt eine gibt), und ich denke, dass die oben genannten 2 Mechanismen einfacher sind, aber Ihre Erfahrungen können variieren.
CL-JSON unterstützt JSON-RPC . Es ist sehr einfach, einen Webserver wie Hunchentoot einen Lisp-basierten Webdienst zu haben, der alles kann, was JSON-RPC spricht (z.B. este ) verwenden können.
Das hängt davon ab, wie oft es vorkommen wird.
- Wenn es nur ab und zu vorkommt, dann führen Sie einfach einen Backquote-Befehl aus, der den Lisp-Interpreter startet, oder popen Sie ihn und schreiben Sie in ihn.
- Wenn das ständig passiert, müssen Sie Lisp bereits laufen haben, und die Frage ist dann, wie man kommuniziert. Jeder der Interprozessor-Mechanismen wird funktionieren, aber ich würde einen TCP-Socket für die Entwicklung, das Testen und die Produktionsflexibilität vorschlagen.
- Wenn es eine Million Mal am Tag passiert, aber ein Spielzeug-Lisp gut genug wäre, ist es eine einfache Sache, Lisp mit Ruby-Klassen zu implementieren. Dies wurde als Kapitel 8 von Praktische Ruby-Projekte .