7
votes

Appeler Lisp de Ruby / Rails?

Comment pouvez-vous appeler un programme LISP à partir d'une application Rails? ... Par exemple, permettez à l'utilisateur final de saisir un bloc de texte dans l'application Web Rails, appuyez sur le texte traité par le programme LISP et renvoyer les résultats à la App?


0 commentaires

4 Réponses :


11
votes

Il y a quelques façons qui viennent à l'esprit:

  1. Exécutez le programme LISP avec processus . Communiquez avec le programme LISP via Standard dans et que le programme LISP SORTIE SON résultat sur STDOUT.

  2. Faites la même chose que ci-dessus, mais communiquez via Nommé Tipes à la place. Demandez à votre code de rubis d'écrire des données dans un tuyau nommé, puis du programme LISP lus à partir de ce tuyau et d'écrire des données out sur un autre tuyau nommé que vous lisez avec votre rubis app. Le programme LISP peut soit fonctionner en arrière-plan sous forme de démon qui vérifie les données sur son tuyau entrant, ou vous pouvez le déclencher selon les besoins en utilisant les utilitaires de ligne de commande de Ruby (comme ci-dessus).

  3. Trouvez un pont Ruby-Lisp. Je n'ai aucune expérience avec un tel pont (je ne sais pas non plus la main si l'on existe même) et je pense que les mécanismes ci-dessus sont plus faciles, mais votre kilométrage peut varier.


0 commentaires

9
votes

Un autre moyen simple est d'exécuter LISP d'exécuter un serveur HTTP et de contacter LISP de l'extérieur via les demandes HTTP.


2 commentaires

Je ne suis pas sûr que la plupart des gens considèrent que aussi simples que ci-dessus, mais peut-être pour les gens de Ror, il pourrait même être plus simple ...


Dans un paramètre Web, il s'agit de l'architecture habituelle axée sur le service. Il existe de nombreux serveurs Web pour Lisp et échangeant des données via des demandes HTTP sont faciles. Tout ce que vous avez à faire est de laisser le serveur LISP réagir à une demande postale.



2
votes

Cela dépendrait de la fréquence à laquelle cela va se passer.

  • Si c'est une fois dans une lune bleue, alors exécutez une commande de backquote qui commence l'interprète Lisp ou la populaire et écrivez-y.
  • Si cela se produit tout le temps, vous devrez disposer de LISP déjà en cours d'exécution, alors la question est donc de savoir comment communiquer. L'un des mécanismes interprocesseurs fonctionnera, mais je suggérerais une prise TCP pour le développement, les tests et la flexibilité de production.
  • Si cela arrive un million de fois par jour, mais un jouet LISP serait assez bon, c'est une question simple à mettre en œuvre Lisp avec des classes de rubis. Cela a été fait comme chapitre 8 des projets de rubis pratiques .

0 commentaires

4
votes

CL-JSON prend en charge JSON-RPC . Il est très facile de configurer avec un serveur Web tel que Hunchentoot pour avoir un service Web basé sur LISP que quelque chose qui parle JSON-RPC (par exemple, Ce ) peut utiliser.


1 commentaires

J'aimerais en savoir plus sur cette approche. Pourriez-vous dire / me dire comment le configurer? Et ce qu'il vous permet de faire, c'est mieux que les demandes de post http?