1

Ruby on RailsリモートサーバーにHTTPリクエストを頻繁に送信する必要があるアプリケーションがあります。em-http-clientそして、毎回1​​つのクライアントを作成するのではなく、それら(複数のクライアントが存在する)をグローバルに保持したいと考えています。しかし、そのクライアント配列をどこに格納する必要があるのか​​、はっきりしていません。たとえば、セッションに保存しますか?または、RORは、すぐに使用できるシングルトンパターンのようなものを用意していますか?

4

1 に答える 1

0

まず、ruby自身がsingletonパターン能力を持つ。ドキュメントをご覧ください。

そのため、リクエスト間で永続的なインプロセス ストレージが必要です。

ではRubyOnRails、次のオプションを使用できます。

  • グローバル変数 (悪い考えです。理由はわかりません)
  • クラス 変数 (継承ツリー全体で共有されるため、悪い考えです)
  • のインスタンス変数metaclass
  • スレッド内ストレージ ( Thread.current[:whatever])
  • 忘れていた別の場所

で初期化することをお勧めしconfig/initializers/your_initializer.rbます。

私は3番目のオプションを好みます。

これがあなたが探している素朴な実装です。

  class EMClient

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

  end
于 2013-01-21T06:27:45.907 に答える