我的情况如下:
我有一个 Rails 应用程序,它有一个用于记录系统事件的活动记录模型。这些系统事件可以来自 rails 应用程序或单独的 Ruby 应用程序。ruby 应用程序当前将其事件发布到 Redis 队列。
Rails 应用程序中是否有办法启动 Redis 侦听器并订阅队列?
我的情况如下:
我有一个 Rails 应用程序,它有一个用于记录系统事件的活动记录模型。这些系统事件可以来自 rails 应用程序或单独的 Ruby 应用程序。ruby 应用程序当前将其事件发布到 Redis 队列。
Rails 应用程序中是否有办法启动 Redis 侦听器并订阅队列?
正如@sergio 所提到的,您的 rails 应用程序不是 redis客户端的地方。Rails Web 应用程序是响应客户端请求的服务器端应用程序。这就是为什么您需要一个单独的进程(最好是守护进程),它充当您的 redis 服务器的客户端。
要守护你的 redis 客户端,你可以使用daemons
gem。我通常将我的守护进程放在<app-root>/lib/daemons/
您可以在您的守护进程中加载完整的 Rails 环境,方法是在开头包含以下几行:
require File.dirname(__FILE__) + "/../config/application"
Rails.application.require_environment!
这样您就可以访问您的模型,并可以通过您的模型类与您的数据库进行交互。