Làm thế nào bạn có thể gọi một chương trình Lisp từ một ứng dụng Rails? ... Ví dụ, cho phép người dùng cuối nhập một khối văn bản trong ứng dụng web Rails, có văn bản được chương trình Lisp xử lý và trả về kết quả cho Rails ứng dụng?Gọi Lisp từ Ruby/Rails?
Trả lời
Một cách đơn giản khác là có Lisp chạy máy chủ HTTP và liên hệ với Lisp từ bên ngoài thông qua các yêu cầu HTTP.
Có một vài cách mà tôi suy nghĩ:
Thực hiện các chương trình lisp với Process. Giao tiếp với chương trình Lisp thông qua tiêu chuẩn, và có chương trình Lisp xuất kết quả của nó trên stdout.
Làm tương tự như trên, nhưng thay vào đó hãy liên lạc qua số named pipes. Yêu cầu mã Ruby viết vào một đường ống có tên, sau đó có chương trình Lisp đọc từ đường ống đó và ghi dữ liệu ra qua một ống được đặt tên khác mà bạn đã đọc bằng ứng dụng Ruby của mình. Chương trình Lisp có thể chạy ở chế độ nền dưới dạng một daemon kiểm tra dữ liệu trên đường ống đến của nó, hoặc bạn có thể kích hoạt nó khi cần thiết bằng cách sử dụng các tiện ích dòng lệnh của Ruby (như trên).
Tìm cầu nối Ruby-Lisp. Tôi không có kinh nghiệm với một cây cầu như vậy (tôi cũng không biết off-hand nếu một cái còn tồn tại) và tôi nghĩ rằng 2 cơ chế trên dễ dàng hơn, nhưng số dặm của bạn có thể thay đổi.
Điều đó phụ thuộc vào tần suất xảy ra.
- Nếu nó một lần trong một mặt trăng màu xanh, sau đó chỉ cần chạy một lệnh backquote bắt đầu trình thông dịch lisp, hoặc bật nó và ghi vào nó.
- Nếu nó xảy ra mọi lúc, bạn sẽ cần phải có Lisp đã chạy, vì vậy câu hỏi sau đó là làm thế nào để giao tiếp. Bất kỳ cơ chế bộ xử lý nào cũng sẽ hoạt động, nhưng tôi sẽ đề xuất một ổ cắm TCP để phát triển, thử nghiệm và linh hoạt sản xuất.
- Nếu nó xảy ra hàng triệu lần mỗi ngày, nhưng đồ chơi Lisp sẽ đủ tốt, đó là một vấn đề đơn giản để triển khai Lisp với các lớp Ruby. Điều này được thực hiện như chương 8 của Các dự án thực tế của Ruby.
CL-JSON hỗ trợ JSON-RPC. Rất dễ thiết lập một máy chủ web như Hunchentoot để có dịch vụ web dựa trên Lisp mà bất kỳ thứ gì có thể nói JSON-RPC (ví dụ: this) đều có thể sử dụng.
Tôi muốn tìm hiểu thêm về phương pháp này. Bạn có thể cho biết/chỉ cho tôi cách thiết lập nó không? Và những gì nó cho phép bạn làm, đó là tốt hơn so với yêu cầu HTTP POST? – mck
- 1. Mã Lisp được gọi từ Java
- 2. Gọi C++ (không phải C) từ Common Lisp?
- 3. Học Clojure đến từ Lisp
- 4. Phát tệp MIDI từ Common Lisp
- 5. Làm thế nào để gọi hàm Emacs Lisp tương tác với một đối số tiền tố, từ một hàm Emacs Lisp khác?
- 6. Phạm vi Lisp chung (động và từ vựng)
- 7. Lisp Executable
- 8. "Fake" biến từ vựng toàn cầu trong Common Lisp
- 9. LISP tối thiểu nhất?
- 10. Visual Lisp: làm thế nào để gọi chức năng trong bên ngoài C + + DLL
- 11. mã nguồn làm đẹp cho lisp (Common Lisp, Scheme, Clojure)
- 12. Hiệp hội trong Common Lisp
- 13. Bộ định thời Lisp chung
- 14. Tên hàm là chuỗi trong Lisp?
- 15. Trao đổi biến LISP
- 16. Luồng trong Common Lisp?
- 17. gói Common Lisp nét
- 18. Gỡ lỗi mã Lisp
- 19. Nested if in lisp
- 20. Sửa Cú pháp Lisp
- 21. Một J2ME lisp?
- 22. Running kém lisp
- 23. Định dạng mã Lisp
- 24. "mở ra" cho lisp chung?
- 25. Dịch vụ web với Lisp
- 26. Land of Lisp example redundency?
- 27. Lisp: Macros vs Chức năng
- 28. gói thống kê cho Common Lisp
- 29. nhân danh sách trống trong emacs lisp
- 30. lisp như một kịch bản shebang vs lisp chạy trong SLIME
Tôi không chắc chắn rằng hầu hết mọi người sẽ xem xét điều đó đơn giản như trên, nhưng có lẽ đối với người RoR, nó thậm chí có thể đơn giản hơn ... –
Trong cài đặt web, đây là kiến trúc hướng dịch vụ thông thường. Có rất nhiều máy chủ web cho Lisp và trao đổi dữ liệu thông qua các yêu cầu HTTP rất dễ dàng. Tất cả những gì bạn cần làm là để máy chủ Lisp đáp ứng yêu cầu POST. –