Ruby on rails 在RubyonRails中使用全局数据的Ruby习惯用法是什么?

Ruby on rails 在RubyonRails中使用全局数据的Ruby习惯用法是什么?,ruby-on-rails,web-applications,eventmachine,Ruby On Rails,Web Applications,Eventmachine,我有一个RubyonRails应用程序,它需要经常向远程服务器发送HTTP请求。我想让那些有多个客户端的客户端保持在全局范围内,而不是每次创建一个客户端。但我不太清楚应该将客户机阵列存储在哪里? 例如,存储在会话中?或者,ROR已经准备了一个开箱即用的单例模式?首先,ruby本身就具有单例模式的能力。看看这本书 因此,您需要在请求之间持久化的进程内存储 在RubyOnRails中,您可以使用以下选项: 全局变量坏主意,我不知道为什么 类变量不是个好主意,因为它们是通过整个继承树共享的 元类的实例

我有一个RubyonRails应用程序,它需要经常向远程服务器发送HTTP请求。我想让那些有多个客户端的客户端保持在全局范围内,而不是每次创建一个客户端。但我不太清楚应该将客户机阵列存储在哪里? 例如,存储在会话中?或者,ROR已经准备了一个开箱即用的单例模式?

首先,ruby本身就具有单例模式的能力。看看这本书

因此,您需要在请求之间持久化的进程内存储

在RubyOnRails中,您可以使用以下选项:

全局变量坏主意,我不知道为什么 类变量不是个好主意,因为它们是通过整个继承树共享的 元类的实例变量 线程内存储thread.current[:随便什么] 在别的地方我忘记了 好主意是在config/initializers/your_initializer.rb中初始化它

我更喜欢第三种选择

下面是您正在寻找的幼稚实现

  class EMClient

    class << self
      attr_accessor :pool
    end
    @pool = []

  end

但每个人都告诉我,类变量在ruby代码中是一种不好的味道。“为什么?”哈利兹,彼此之间存在误解。我已经更新了答案。