問題タブ [celluloid]
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 - プールを使用しようとすると Celluloid がクラッシュする
セルロイドを使用する私のプロジェクトでプールを使用しようとしています。ただし、セルロイドpool
のクラスでメソッドを呼び出すと(したがって、からメソッドを受け取る)、一貫してエラーが発生します。include
Celluloid::ClassMethods
具体的には、この部分が問題のようです。
NoMethodError: Celluloid:Module の未定義のメソッド「services」
問題のある行は/Users/my_username/.rvm/gems/jruby-9.0.5.0/gems/celluloid-supervision-0.20.6/lib/celluloid/supervision/deprecate/supervise.rb:54
. Celluloid::Supervision.router
行にメソッドのコードが含まれていることがわかります。
問題が私の特定のプロジェクトにないことを確認するために、この記事からプールを利用するコード サンプルを取得し、それを実行しようとしました。
私のプロジェクトとまったく同じエラーで失敗しました:
最後に、IRB で非常に単純なコードを実行して、pool
何が原因でエラーが発生するかを確認しましたservices
。
案の定、まったく同じエラーが発生しました。Celluloid にバグがあるか、依存関係を適切にロードしていないようです。しかし、私はrequire 'celluloid/supervision'
これを解決しようとしましたが、役に立ちませんでした。私は自分の側で何か間違ったことをしていますか、それともセルロイドのバグですか?
ruby-on-rails - レール要求中のセルロイドのデッドロック
ファイルをAzureにアップロードすることになっている次のコントローラーパスがあります。
私は azure-contrib を使用してチャンクファイルを azure にアップロードし、azure-contrib はセルロイドを使用します。
私が得るエラーは次のとおりです。
ruby - セルロイド プールのブロックで #future 呼び出しを行うには?
HTTP 通信を実行し、結果を使用して値を計算するワーカーのプールを作成しようとしています。
私の最初のアプローチは次のようになります。
ほぼ期待どおりに動作します — 5 つの並行プロセスがexternal_call
同時に実行されているようです。
問題は、コードが「合理化」されておらず、事前にすべてを事前計算することarguments
です (これらの計算は よりもはるかに高速ですexternal_call
)。プールはすぐに作業を開始する未来を提供できないため、コードを最初のブロックで待機させたいと思います。
future
はプールがワーカーを解放するのを待っていません (またそうでもありませんasync
)。これらの呼び出しをプール内の空きワーカーを待機させるにはどうすればよいですか (つまり、get
使用できるワーカーを返すプールからのようなことを実行します)。
ruby - Celluloid と ThreadError: スレッドを作成できません: リソースが一時的に利用できません
主に非同期を使用してセルロイドで作業を処理するいくつかのワーカーを実行しています。私のコードの一部は、future または after も使用しています。すべてが非常にうまく機能しますが、最終的にはシステムが発生し始めます: ThreadError: スレッドを作成できません: リソースが一時的に利用できません
Ruby 2.3.1 を使用していますが、これを防ぐ解決策があるかどうかを知りたいです。ワーカーのプールを処理してスレッドの量を制御するかどうかは気にしませんが、空きスレッドがなくなってシステムがクラッシュするという点を上げたくありません。
JRuby に移行することがこれを解決する唯一の方法ですか?
ruby - Ruby: TCP Socket 経由で文字列を送信する
私は Ruby にかなり慣れていないので、別のプログラミング言語を試してみることにしました。私はソケットを理解しようとしてきましたが、これは私が一般的にあまり慣れていない分野です。プレーヤーがアイコンを画面上で移動できるようにする基本的な「ゲーム」を作成しましたが、これを TCP ソケットを使用してマルチプレーヤーにできるものにしようとしています。
現時点では、プレーヤーがホストとしてゲームを起動すると、サーバーが作成されます。プレーヤーがクライアントとしてゲームを開始すると、サーバーに接続します。現在、同じマシンでのみ機能しますが、接続は正常に確立されており、クライアントとして接続すると、サーバーはユーザー名を作成し、これをクライアントに送り返し、クライアントはそれを使用してプレーヤーを作成します。
サーバーとクライアントの間で通信しようとすると問題が発生します。メッセージはサーバーからクライアントに送信されているように見えますが、部分的にしか送信されておらず、最初または最後で大きく切り捨てられているようです。
これの原因について誰かがアドバイスできるなら、それは大歓迎です。Gosu と Celluloid-IO で Ruby を使用しています。
サーバークラス
クライアントクラス
サイドノート; また、クライアント クラスを模倣する Host クラスもありますが、それはサーバーを呼び出すだけです。私はこれが物事を行うためのひどい方法であることを認識しています.現在の問題を克服したら修正するつもりです.
よろしくお願いします