0

我有一个带有 PubSub 服务器(Faye)作为中间件的 Rails 应用程序。我有用于模型、视图和控制器的常用 Rails 结构,并且我有一些用于套接字通道的控制器。(提供通过FayeRails )

问题: 我需要在我的套接字控制器和我的通用控制器之间共享一个客户端列表。这是因为身份验证是通过 Rails 控制器完成的(所以我可以使用会话)..

通常我会把这种东西放在我的ApplicationController所有继承的控制器和视图中,但是套接字控制器是从继承的,FayeRails::Controller所以不是一个选项。我不知道这些控制器的实例去哪里了。另外,我无法编辑初始化,因为所有控制器都是由 Rails 和 FayeRails gem 自动设置的。我尝试使用全局变量,但感觉不对。我也一直在考虑 ActiveRecord,但是将快速变化的数据添加到数据库中感觉不对。最后我想到了一个类似于 ActiveRecord 的类,它包含列表,但这感觉和全球一样..

我真的想不出在这两个控制器之间共享客户端列表的任何其他选项。

这样做的好方法是什么?

4

1 回答 1

0

您可以将所需的内容放在 lib 目录中的模块中。将它包含在您的 application_controller 中,然后扩展主要的 FayeRails 控制器,也将模块包含在其中。要扩展,只需在您的控制器文件中创建一个具有相同名称的新的,也许确定类名是相同的,然后在您的 config/initializers/extensions.rb 文件中要求它。

例子

# config/initializers/extensions.rb
require "#{Rails.root}/app/controllers/whatever_controller.rb"

至于速度,是的,如果您担心我会考虑将您需要的东西保存在持久性 redis 数据库中。但是如果 FayesRails 使用 ActiveRecord 方法,我不确定这将是多么容易/难。

于 2013-04-17T21:50:08.437 回答