問題タブ [eventmachine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - Rubyがsendメソッドのオーバーライドに失敗する
これを説明するのは少し難しいですが、アプリケーションで「send」メソッドをオーバーライドできない場合があります。私はEventMachineに基づいてかなり大きなアプリケーションを作成しており、コードの奥深くで、クラスの1つに「send」メソッドを定義することにしました。後でこのメソッドを使用しようとすると、通常、TypeError: <parameter> is not a symbol
次のような例外が発生します(必要なAMQP gem(私のものではない)が原因である可能性がありますが、この質問はより一般的です)。
これは問題のある行です:
この特定のケースでは、@connection
オブジェクトのクラスは、send
を受け取るメソッドを定義していAMQ::Protocol::MethodFrame
ます。ただし、どういうわけかデフォルトのObject#send
メソッドが呼び出されているようです(これはシンボルを期待しているため、例外です)。
開発の初期に、カスタムクラスの1つで同じ問題が発生しました。これは、「send」メソッドの名前を「send_message」に変更することで解決されました。
send
それで、これは少し一般的ですが、問題は、それを定義したオブジェクトでカスタム定義されたメソッドを呼び出す能力を妨げる可能性があるのはどのようなものですか?
参考:OSXでRuby1.9.2p180を使用しています。
mongodb - MongoMapper、MongoDB、EventMachine
DaemonKitを使用してAMQPリスナーを作成しています。メッセージがネットワークに届くたびに、MongoDBにログを記録したいと思います。Rails MongoDB構成を移動しましたが、接続は正常に機能します。新しいモデルを作成しようとすると、Model.createメソッドでエラーが発生します。
オブジェクトを作成するためのコード:
私は、mongomapperをフォークしてhttp呼び出しを非同期にすることができると読みましたが、これらのエラーはmongodbrubyドライバーから発生しているようです。どんな助けでも大歓迎です。
ruby - em_mysql2で「接続はまだ結果を待っています」エラーを解決する方法
Goliath (eventmachine) の下で em_mysql2 で activerecord を使用しています。User モデルで最も奇妙なことが起こっています。初めて /users に POST を実行すると、期待どおりに機能します。2 番目の POST を実行すると、エラーが発生します。
これは、他のモデルやルートでは発生しません。データベース接続がめちゃくちゃな状態にある場合、他のリクエストでも同じエラーが表示されると思いますが、いいえ-他のすべてのDB更新およびGETリクエストは正常に機能しているようです。
これが私の Users モデルでのみ User.save アクションでのみ発生する可能性があることを理解している人はいますか? アクティブなレコードは、Model.save を実行するために使用した DB 接続を保存して再利用しますか?
編集:
この質問を書いたとき、ActiveRecord を ORM として使用していたことに言及できませんでした。また、ユーザー認証情報を取得するために Mongo データベースにリクエストを非同期的に送信していたことにも言及しませんでした。
私の解決策:
このエラーが発生するのは、MySQL からの応答よりも前に Mongo からの応答が戻ってきたときだけであり、MySQL の応答が、要求を行ったファイバーとは異なるファイバーによって取得されたことが判明しました。私が使用していた MySQL2 ファイバーの実装では、ファイバーの objectID を使用して接続を管理していたため、問題が発生したようです。
ActiveRecord + MySql2 + Fibers + Goliath の全体的な接続プールは、完全にサポートされている構成ではありませんでした。(その時から多少の進歩はあるかもしれませんが)
ruby - 1つのEventMachineリアクター内の複数のサーバー
1台のイベントマシン内で複数のサーバーを実行することは可能ですか?
つまり、1つのクライアント接続で複数のサービスを同時に使用できるということです。たとえば、ログインサーバーがユーザーを認証すると、ユーザーはチャットルームと、単一のクライアントソケットを備えたチェッカーなどの単純なゲームの両方を同時に使用できますか?
または、サービスごとに複数のイベントマシンリアクターが必要ですか?
ruby - 私はeventmachineを正しい方法で使用していますか?
私はruby-smppとredisを使用して、キューベースのバックグラウンドワーカーを実現してSMPPメッセージを送信しています。
そして、私はeventmachineを正しい方法で使用しているかどうか疑問に思っています。動作しますが、正しく感じられません。
ruby - Mac OSX Snow Leopard に EventMachine をインストールする方法
私はこの問題を検索し、PC に関連するリソースを見つけ続けました。
EventMachine をインストールしようとするたびに、次のエラーが発生します。
C 拡張機能のビルド中に壊れたようです。「 Mac OS X Leopard で ruby gem eventmachine をインストールする」など、さまざまな解決策を試しましたが、うまくいきませんでした。
ruby - Eventmachine で Postgres を使用する
eventmachine 内で postgres に接続する良い方法を知っている人はいますか?
eventmachine にバンドルされた実装があることは知っていますが、ソケットの使用は好きではありません。
クエリを送信できる通常の接続が必要です。
ruby - パス内のパラメーターで非同期シナトラが失敗する
次のようにeventmachineを使用するasync_sinatraアプリケーションがあります。
/test?foo=bar
生成されたURLを要求するとtest: bar
、パスをとして宣言しaget '/test/:foo' do
て使用しようとするとparams[:foo]
、要求が返されません。
async_sinatraでURL内パラメーターを使用できないのはなぜですか?
ruby-on-rails - Thin/eventmachine 非ルート インストールの問題
nginx+thin で Ruby on Rails フレームワークを実行しようとしていますが、現在は WEBrick で作業しています。
ルート アクセス権がありません。Web ホスティング サービスでホストされているためです。
この瞬間まで、gem に関するすべての問題は root アクセスなしで解決されました。
Thin には eventmachine が必要なので、次のようにします。
ruby とインストールされている gem のバージョン:
私は本当に理解していませんでしERROR: Failed to build gem native extension.
たmake install ***Error code 71
.
しようとしても同じことが起こる$ gem install thin
websocket - EventMachineを使用してPubSubチャットシステムをセットアップするにはどうすればよいですか?
私は学ぼうとしていますEventMachine
(そしてより良い非同期プログラマーになります)。クラシックで行こうと思いましたchat app
。
WebSocket(em-websocke
tを使用)サーバーとWebSocketクライアントをセットアップするように管理しました。most browsers don't support WebSocket!
特にIEに気付くまではすべてが素晴らしかった。どこでもChromeを使用するための私の呪い。笑
では、EventMachineをサーバーとして(着信メッセージを受信するために)使用し、サブスクライブされたクライアントにメッセージを送り返すにはどうすればよいですか?
さらに、これをどのブラウザでも機能させたいです。
提案をありがとう。