如何在继承自不同类的两个类之间共享数组

时间:2013-04-17 20:35:04

标签: ruby-on-rails controllers faye data-sharing

我有一个带有PubSub服务器(Faye)作为中间件的Rails应用程序..我有通常的模型,视图和控制器的Rails结构,而且我的Socket通道有一些控制器。 。(由FayeRails提供)

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

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

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

这样做会有什么好的和干净的方式?

1 个答案:

答案 0 :(得分:0)

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

实施例

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

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