1

我有一个Ruby on Rails应用程序需要经常向远程服务器发送 HTTP 请求。而且我想在全球范围内保留这些(有多个客户)em-http-client,而不是每次都创建一个客户。但是我不太清楚我应该在哪里存储客户端数组?例如,存储在会话中?或者,ROR 已经准备好开箱即用的单例模式之类的东西?

4

1 回答 1

0

首先,ruby本身具有singleton格局能力。查看文档

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

RubyOnRails您可以使用以下选项:

  • 全局变量(坏主意,我不知道为什么)
  • 变量(坏主意,因为它们通过整个继承树共享)
  • 的实例变量metaclass
  • 线程内存储 ( Thread.current[:whatever])
  • 在我忘记的其他地方

好主意是将其初始化为config/initializers/your_initializer.rb.

我更喜欢第三种选择。

这是您正在寻找的天真的实现。

  class EMClient

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

  end
于 2013-01-21T06:27:45.907 回答