問題タブ [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.

0 投票する
1 に答える
1575 参照

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を使用しています。

0 投票する
1 に答える
876 参照

mongodb - MongoMapper、MongoDB、EventMachine

DaemonKitを使用してAMQPリスナーを作成しています。メッセージがネットワークに届くたびに、MongoDBにログを記録したいと思います。Rails MongoDB構成を移動しましたが、接続は正常に機能します。新しいモデルを作成しようとすると、Model.createメソッドでエラーが発生します。

オブジェクトを作成するためのコード:

私は、mongomapperをフォークしてhttp呼び出しを非同期にすることができると読みましたが、これらのエラーはmongodbrubyドライバーから発生しているようです。どんな助けでも大歓迎です。

0 投票する
1 に答える
2160 参照

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 の全体的な接続プールは、完全にサポートされている構成ではありませんでした。(その時から多少の進歩はあるかもしれませんが)

0 投票する
1 に答える
2629 参照

ruby - 1つのEventMachineリアクター内の複数のサーバー

1台のイベントマシン内で複数のサーバーを実行することは可能ですか?

つまり、1つのクライアント接続で複数のサービスを同時に使用できるということです。たとえば、ログインサーバーがユーザーを認証すると、ユーザーはチャットルームと、単一のクライアントソケットを備えたチェッカーなどの単純なゲームの両方を同時に使用できますか?

または、サービスごとに複数のイベントマシンリアクターが必要ですか?

0 投票する
2 に答える
3457 参照

ruby - 私はeventmachineを正しい方法で使用していますか?

私はruby-smppとredisを使用して、キューベースのバックグラウンドワーカーを実現してSMPPメッセージを送信しています。

そして、私はeventmachineを正しい方法で使用しているかどうか疑問に思っています。動作しますが、正しく感じられません。

0 投票する
4 に答える
3572 参照

ruby - Mac OSX Snow Leopard に EventMachine をインストールする方法

私はこの問題を検索し、PC に関連するリソースを見つけ続けました。

EventMachine をインストールしようとするたびに、次のエラーが発生します。

C 拡張機能のビルド中に壊れたようです。「 Mac OS X Leopard で ruby​​ gem eventmachine をインストールする」など、さまざまな解決策を試しましたが、うまくいきませんでした。

0 投票する
1 に答える
521 参照

ruby - Eventmachine で Postgres を使用する

eventmachine 内で postgres に接続する良い方法を知っている人はいますか?

eventmachine にバンドルされた実装があることは知っていますが、ソケットの使用は好きではありません。

クエリを送信できる通常の接続が必要です。

0 投票する
1 に答える
281 参照

ruby - パス内のパラメーターで非同期シナトラが失敗する

次のようにeventmachineを使用するasync_sinatraアプリケーションがあります。

/test?foo=bar生成されたURLを要求するとtest: bar、パスをとして宣言しaget '/test/:foo' doて使用しようとするとparams[:foo]、要求が返されません。

async_sinatraでURL内パラメーターを使用できないのはなぜですか?

0 投票する
2 に答える
1399 参照

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

0 投票する
2 に答える
656 参照

websocket - EventMachineを使用してPubSubチャットシステムをセットアップするにはどうすればよいですか?

私は学ぼうとしていますEventMachine(そしてより良い非同期プログラマーになります)。クラシックで行こうと思いましたchat app

WebSocket(em-websocketを使用)サーバーとWebSocketクライアントをセットアップするように管理しました。most browsers don't support WebSocket! 特にIEに気付くまではすべてが素晴らしかった。どこでもChromeを使用するための私の呪い。笑

では、EventMachineをサーバーとして(着信メッセージを受信するために)使用し、サブスクライブされたクライアントにメッセージを送り返すにはどうすればよいですか?

さらに、これをどのブラウザでも機能させたいです。

提案をありがとう。