Web 应用程序 - Ruby 习语在 Ruby on Rails 中使用全局数据是什么?



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

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

所以你需要在请求之间持久的进程内存储。

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

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

最好在config/initializers/your_initializer.rb中初始化。

我更喜欢第三种选择。

这是你正在寻找的简单实现。

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

相关内容

  • 没有找到相关文章

最新更新