【问题标题】:How to create a redis listener inside a Rails app如何在 Rails 应用程序中创建 redis 侦听器
【发布时间】:2012-11-17 20:28:50
【问题描述】:

我的场景如下:

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

Rails 应用程序中是否有办法启动 Redis 侦听器并订阅队列?

【问题讨论】:

  • Rails 是一个 Web 框架。请求-响应周期。没有长期运行的东西。您需要一个单独的守护进程来处理该队列并将数据写入数据库。然后,您的 rails 模型将照常从数据库中获取数据。

标签: ruby-on-rails ruby redis


【解决方案1】:

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

要守护您的 redis 客户端,您可以使用 daemons gem。我通常将我的守护进程放在<app-root>/lib/daemons/

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

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

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

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2013-03-08
    • 2021-01-05
    • 2017-04-28
    相关资源
    最近更新 更多