Aufruf von Lisp aus Ruby / Rails?

7

Wie können Sie ein Lisp-Programm von einer Rails-Anwendung aufrufen? ... Lassen Sie den Endbenutzer beispielsweise einen Textblock in der Rails-Web-App eingeben, lassen Sie den Text vom Lisp-Programm verarbeiten und geben Sie die Ergebnisse an Schienen App?

    
tjr 29.10.2009, 16:39
quelle

4 Antworten

9

Eine andere einfache Möglichkeit besteht darin, dass Lisp einen HTTP-Server betreibt und Lisp von außen über HTTP-Anfragen kontaktiert.

    
Rainer Joswig 29.10.2009, 16:59
quelle
11

Es gibt ein paar Möglichkeiten, die Ihnen einfallen:

  1. Führen Sie das Lisp-Programm mit Process aus. Kommunizieren Sie mit dem Lisp-Programm über standard in und lassen Sie das Lisp-Programm sein Ergebnis über stdout ausgeben.

  2. Machen Sie dasselbe wie oben, aber kommunizieren Sie stattdessen über Named Pipes . Lassen Sie Ihren Ruby-Code in eine Named Pipe schreiben, lassen Sie das Lisp-Programm von dieser Pipe lesen und schreiben Sie out über eine andere Named Pipe, die Sie dann mit Ihrem Ruby lesen App Das Lisp-Programm kann entweder im Hintergrund als Daemon ausgeführt werden, der nach Daten auf seiner ankommenden Pipe sucht, oder Sie können es bei Bedarf mit den Befehlszeilendienstprogrammen von Ruby starten (wie oben).

  3. Suchen Sie eine Ruby-Lisp-Brücke. Ich habe keine Erfahrung mit solch einer Brücke (noch weiß ich nicht, ob es überhaupt existiert) und ich denke, die obigen 2 Mechanismen sind einfacher, aber Ihre Laufleistung kann variieren.

mipadi 29.10.2009 16:48
quelle
4

CL-JSON unterstützt JSON-RPC . Es ist sehr einfach mit einem Webserver wie Hunchentoot einzurichten, einen Lisp-basierten Web-Service zu haben, der alles, was JSON-RPC spricht ( zB kann dies ) verwenden.

    
jlf 29.10.2009 18:44
quelle
2

Es hängt davon ab, wie oft es passieren wird.

  • Wenn es einmal in einem blauen Mond ist, dann führe einfach einen backquote-Befehl aus, der den Lisp-Interpreter startet, oder öffne ihn und schreibe darauf.
  • Wenn es die ganze Zeit passiert, müssen Sie Lisp bereits laufen lassen, also lautet die Frage, wie Sie kommunizieren sollen. Jeder der Interprozessormechanismen wird funktionieren, aber ich würde einen TCP-Socket für Entwicklung, Test und Produktionsflexibilität vorschlagen.
  • Wenn es millionenmal am Tag passiert, aber ein Spielzeug-Lisp wäre gut genug, ist es einfach, Lisp mit Ruby-Klassen zu implementieren. Dies wurde als Kapitel 8 von Praktische Ruby-Projekte gemacht.
DigitalRoss 29.10.2009 17:08
quelle

Tags und Links