0

ミドルウェアとして PubSub サーバー (Faye) を備えた Rails アプリケーションを持っています。モデル、ビュー、およびコントローラー用の通常の Rails 構造があり、ソケットチャネル用のコントローラーがいくつかあります。FayeRailsによる)

問題: ソケット コントローラと汎用コントローラの間でクライアント リストを共有する必要があります。これは、Rails コントローラーを介して認証が行われるためです (そのため、セッションを使用できます)。

通常、私はこの種のものを自分の中に入れて、ApplicationController継承されたすべてのコントローラーとビューがアクセスできるようにしますが、ソケットコントローラーは継承されFayeRails::Controllerているため、オプションではありません..これらのコントローラーのインスタンスがどこに行くのかわかりません..また、すべてのコントローラーが Rails と FayeRails gem によって自動的にセットアップされるため、初期化を編集できません。グローバルを使用してみましたが、それは間違っているように感じます..また、ActiveRecordについて考えていましたが、データベースに急速に変化するデータを追加するのは適切ではありません..最後に、リストですが、これはグローバルと同じように感じます..

これら 2 つのコントローラー間でクライアント リストを共有する他のオプションは考えられません。

これを行うための素晴らしくきれいな方法は何でしょうか?

4

1 に答える 1

0

モジュールに必要なものを lib ディレクトリに入れることができます。それを application_controller に含めてから、メインの FayeRails コントローラーを拡張し、そこにもモジュールを含めます。拡張するには、コントローラーファイルに同じ名前の新しいものを作成しました。おそらくクラス名が同じであることを確認してから、 config/initializers/extensions.rb ファイルでそれを必要とします。

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

速度に関しては、ええ、それが心配な場合は、永続的な redis DB に必要なものを保持することを検討します。しかし、FayesRails が ActiveRecord メソッドを使用している場合、それがどれほど簡単/難しいかわかりません。

于 2013-04-17T21:50:08.437 に答える