Ruby on rails Rails 3与后台进程之间的I/O
简短版本:我需要从Rails控制器(使用Rails 3)启动子流程(Ruby脚本),并将子流程中的Ruby on rails Rails 3与后台进程之间的I/O,ruby-on-rails,ruby,io,Ruby On Rails,Ruby,Io,简短版本:我需要从Rails控制器(使用Rails 3)启动子流程(Ruby脚本),并将子流程中的stdout消息呈现到网页,并从Rails视图将信息传递到子流程中 设置:我有一个Ruby脚本,它与一个名为Ruby 1.9.3的软件消息总线系统进行通信,使用Ruby 1.9.3向网络上其他地方运行的某些硬件发送控制消息,并从中接收消息。我不能在这里使用替代的信息系统,它必须是常春藤。脚本当前将消息写入stdout 问题1:我想从Rails应用程序的控制器以子进程(或线程,我愿意接受建议)的形式启
stdout
消息呈现到网页,并从Rails视图将信息传递到子流程中
设置:我有一个Ruby脚本,它与一个名为Ruby 1.9.3的软件消息总线系统进行通信,使用Ruby 1.9.3向网络上其他地方运行的某些硬件发送控制消息,并从中接收消息。我不能在这里使用替代的信息系统,它必须是常春藤。脚本当前将消息写入stdout
问题1:我想从Rails应用程序的控制器以子进程(或线程,我愿意接受建议)的形式启动此脚本。我希望能够接收来自此脚本的消息,以便它们可以显示在网页上。不需要将这些消息持久地存储在数据库中,因此我考虑使用Rails缓存来临时存储和访问这些消息,并可能使用AJAX每隔一段时间轮询缓存中的新消息。这可能吗
问题2:相同的Rails应用程序需要能够将控制消息从网页(例如,通过用户与按钮、下拉列表或其他一些UI元素交互)发送到Ivy子流程,以便这些控制消息可以传播到硬件
我已经研究了潜在的解决方案,如,和其他,但我无法通过浏览文档找到确凿的证据,证明这些潜在的解决方案可以同时解决问题1和2。因此,我的问题如下:
由于您不是Rails的超级用户,因此使用Python或Perl可能更容易做到这一点,因为常春藤人已经有了用这些语言编写的工具。听起来有三个问题:
您可以使用这些背景解决方案中的一个或两个来解决这个问题,但我肯定认为您需要一个单独的过程来管理至少第一个问题。这将允许关注点3(您的web应用程序)只处理从数据存储中读取数据并为用户呈现数据,以及将某些请求(命令)转换为后台作业。这可以让你的Rails应用程序尽其所能,但仍然可以让你做你需要的一切。Rails 4支持实时流媒体()