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

Ruby on rails 如何在继承自不同类的两个类之间共享数组,ruby-on-rails,controllers,faye,data-sharing,Ruby On Rails,Controllers,Faye,Data Sharing,我有一个Rails应用程序,其中有一个PubSub服务器(Faye)作为中间件。。我为模型、视图和控制器提供了常用的Rails结构,为套接字通道提供了一些控制器。。(提供人) 问题: 我需要在套接字控制器和常规控制器之间共享客户端列表。 这是因为身份验证是通过Rails控制器完成的(因此我可以使用会话) 通常我会将此类内容放在我的ApplicationController中,以便所有继承的控制器和视图都可以访问它,但套接字控制器是从FayeRails::Controller继承的,因此没有选项。

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

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

通常我会将此类内容放在我的
ApplicationController
中,以便所有继承的控制器和视图都可以访问它,但套接字控制器是从
FayeRails::Controller
继承的,因此没有选项。。我不知道这些控制器的实例去了哪里。。此外,我无法编辑初始化,因为所有控制器都是由Rails和FayeRails gem自动设置的。我试着用globals,但感觉不对。。我也一直在考虑使用ActiveRecord,但我觉得向数据库中添加快速变化的数据是不对的。。最后,我想到了一个类似ActiveRecord的类来保存列表,但这感觉和全局的一样

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


做这件事的好方法是什么

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

范例

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

至于速度,是的,如果你担心我会把你需要的东西保存在一个持久的redis DB中。但是如果FayesRails使用ActiveRecord方法,我不确定这有多容易/难。

尝试过的会话?或者可能是rails缓存或Redis?我在Faye控制器中没有遇到任何会话使用,也从未使用过Redis或rails缓存,但如果这些问题就是这样解决的,我一定会检查它们!我会回来让你知道他们是怎么做的。。谢谢Redis是一个不错的选择!谢谢你的支持!我将首先尝试Redis,然后我可以避免使用Faye的内置ActiveRecord回调。。谢谢尝试Redis ATM,工作正常!我想我将把redis逻辑包装在
lib
文件夹中的一个模块中,以防应用程序增长以保持组织。。所以,再次感谢你!