Rails + XMPP机器人在背景中

has*_*ipe 5 ruby xmpp xmpp4r resque ruby-on-rails-3

我正在构建一个基本上允许用户与机器人聊天的服务,然后僵尸机构会对用户发送的聊天进行一些奇怪的处理,并最终回复一些有意义的数据.基本上类似于Aardvark使用(?)工作的东西.

我的机器人正在工作,现在正在聆听,我有一个单独的rails应用程序,它将执行所有其他繁重的工作.这两个部分都是单独工作,现在我陷入了两者的连接.我的想法是通过Resque将机器人(基本上是一个小的ruby脚本)与rails应用程序连接 - 任何进入队列的东西,被拾取,结果然后再次推回到队列,然后脚本会回复结果.

我不清楚如何建立这个接口:

  1. 我是否需要编写一个rake任务来启动/停止/重新加载机器人
  2. 如果我在没有rake的情况下运行它(据说是由Monit监控的独立进程)那么我如何与Resque接口或访问我的rails模型?

我知道这些可能是非常微不足道的问题,但我很难理解哪个更好,以及如何进行设置.

Win*_*eld 4

您可以通过三种方式在 Rails 应用程序和此 bot 守护程序之间进行通信:

  1. 通过以 HTTP 请求方式调用 Rails 应用程序(从 Rails 应用程序推送/拉取数据)
  2. 通过直接与 Rails 应用程序使用的数据库交互(可能是 Mysql/Postgres)
  3. 通过与 Redis 数据库支持的 Resque 工作队列系统交互

当您将 Resque 作业加入队列并从各种作业队列中取出时,您只是通过 API 读取/写入共享 Redis 数据库。机器人和 Rails 应用程序都通过网络与 Redis DB 进行通信。

我建议直接将机器人作为 monit 管理的 ruby​​ 进程或 rake 任务运行。听起来你已经知道如何做到这一点了。