如何在Rails应用程序中创建redis侦听器

我的方案如下:

我有一个Rails应用程序,它具有用于写下系统事件的活动记录模型。 这些系统事件可以来自rails应用程序或来自单独的Ruby应用程序。 ruby应用程序当前将其事件发布到Redis队列。

Rails应用程序中是否有一种方法可以启动Redis侦听器并订阅队列?

正如@sergio所提到的,您的rails应用程序不适合redis 客户端 。 rails Web应用程序是响应客户端请求的服务器端应用程序。 这就是为什么,您需要的是一个单独的进程(最好是一个守护进程),它充当您的redis服务器的客户端。

要守护你的redis客户端,你可以使用daemons gem。 我通常将我的守护进程放在/lib/daemons/

您可以在守护进程中加载​​完整的Rails环境,方法是在开头包含以下行:

 require File.dirname(__FILE__) + "/../config/application" Rails.application.require_environment! 

这样您就可以访问模型,并可以通过模型类与数据库进行交互。