【发布时间】:2012-04-04 15:33:09
【问题描述】:
- 用户转到页面 A 以创建新的多人游戏
- 页面 A 中的脚本为游戏生成一个唯一 ID,并为其创建一个工作器。类似于:rails runner GameWorker.new(:game_id => game_id).start_game
- 页面 A 中的脚本将用户重定向到页面 B,在那里他可以看到新创建的游戏,其他人也可以加入。
工人应该活着直到游戏结束。
运行启动worker的命令的正确方法是什么?它必须是非阻塞的,并且最好将输出重定向到日志文件,以防出现问题。
如果重要的话,我正在使用 Rails 3。
更新 我要改写我的问题:如何从 ruby 中运行 linux 命令并且不等待命令结束?我的意思是 &>> 的等价物。例如,在 php 中,&>> 工作正常,我不需要使用任何特殊的 php 函数,但在 ruby 中,它似乎被覆盖,脚本等待命令结束并获取输出。
【问题讨论】:
-
你为什么要为此使用跑步者?你当时的想法是什么?
-
@JesseWolgamott 我使用 runner 来创建和运行工人。它就像一个 cronjob:它不是请求/响应的一部分,它有自己的“生命”
-
听起来你需要一个订阅/发布服务,就像工作人员一样。也就是说,如果您想与多个用户实时通信。签出:faye.jcoglan.com
-
我使用 gem 'daemons',它每秒都在寻找处理所需的游戏
-
我的回答可能对您有所帮助。不要注意它使用 Sinatra 的事实,只是启动进程并存储其 PID 的操作。 stackoverflow.com/a/9911695/366051
标签: ruby-on-rails ruby