Ruby 将一个 Ruby 脚本置为服务,调用该脚本则调用该服务

deathking · 2013年01月26日 · 最后由 jjym 回复于 2013年01月26日 · 2921 次阅读

先说一下需求吧。假设我有一个脚本叫poj.rb吧,他完成下面的功能:

  • poj.rb get 1001 :从我设定的网站获取id1001的网页;
  • poj.rb submit 1001.c :将1001.c文件提交;

我现在想说的是,这个脚本初始化需要消耗一定的资源,而调用的频率也非常高,因此,我希望初始化一次而响应参数多次。也许有人说你可以这样实现:

# 初始化
init()

# 获得输入
while str = gets
  # 处理str
end

但实际的需求不允许我这样,我想要实现类似于git的效果,也就是在终端中这样:

$ git add README.md
$ git commit -m 'first commit'
$ 
$ poj.rb get 1001
$ poj.rb submit 1001.pas

因此,我想让hoj.rb在第一次运行后就成为daemon,以后在shell调用poj.rb时,不会新建一个实例,而是把消息发送给之前创建好的daemon

我目前能想到的方法是用Daemons这个 gem,但是使用Daemons.daemonize方法似乎不起作用。所以想问下各位:

  • daemons这个库应该如何实现这个功能;
  • daemons如果不能实现这个功能,那么ruby能么?要如何实现呢?

用 eventmachine 搭建个服务器

ruby 监听某个端口提供服务 god 维持 ruby 进程的持续运行,这样就可以了吧

1.9 后用 process 类就可以实现 deamon

需要 登录 后方可回复, 如果你还没有账号请 注册新账号