私のシナリオは次のとおりです。
システムイベントを書き留めるためのアクティブなレコードモデルを持つRailsアプリがあります。これらのシステム イベントは、Rails アプリまたは別の Ruby アプリから発生する可能性があります。ruby アプリは現在、そのイベントを Redis キューに発行しています。
Rails アプリ内で Redis リスナーを開始してキューにサブスクライブする方法はありますか?
私のシナリオは次のとおりです。
システムイベントを書き留めるためのアクティブなレコードモデルを持つRailsアプリがあります。これらのシステム イベントは、Rails アプリまたは別の Ruby アプリから発生する可能性があります。ruby アプリは現在、そのイベントを Redis キューに発行しています。
Rails アプリ内で Redis リスナーを開始してキューにサブスクライブする方法はありますか?
@sergio が述べたように、レール アプリケーションは redisクライアントの場所ではありません。Rails Web アプリケーションは、クライアントからの要求に応答するサーバー側アプリケーションです。そのため、必要なのは、redis サーバーのクライアントとして機能する別のプロセス (できればデーモン) です。
redis クライアントをデーモン化するには、daemons
gem を使用できます。私は通常、デーモンを次の場所に配置します<app-root>/lib/daemons/
次の行を最初に含めることで、完全な Rails 環境をデーモン プロセスにロードできます。
require File.dirname(__FILE__) + "/../config/application"
Rails.application.require_environment!
そうすれば、モデルにアクセスでき、モデル クラスを介して DB と対話できます。