問題タブ [popen3]
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 - popen3ブロックフォームルビーのモック
rspecを使用してRubyでいくつかのテストケースを開発しています。
popen3 関数をモックしようとしています。
ただし、ブロック形式を維持しながら、期待される出力情報を取得できません。
関数をモックアウトするために、次のことを行っています。
関数をモックアウトしても「do」コードは入力されず、空のデータ構造が残ります。
どうすればこれを適切に行うことができるのだろうかと思っていました。
ありがとう!
ruby - Rubyでopen3を使用して呼び出されたプロセスを強制終了します
私はコマンドラインプログラムを使用していますが、以下のように動作します:
「アプリ」が必要とするパラメーターを使用して「長いテキスト」が書き込まれると、テキスト ファイルに結果が書き込まれます。そうでない場合は、テキスト ファイルを継続的にドットで埋めます (これを回避するために「アプリ」のコードを処理または変更することはできません)。
Ruby スクリプトには、次のような行があります。
ここで、テキストが適切に記述されていれば問題はなく、前述のように出力ファイルが得られます。問題は、テキストがうまく書かれていない場合に発生します。次に何が起こるかというと、Ruby スクリプトがハングアップし、それを強制終了する方法がわかりません。
Open3を見つけて、次のような方法を使用しました。
私がする時:
また、ハングします。
これらの問題を回避するにはどうすればよいですか? 「アプリ」が失敗したことを認識していませんか?
ruby - Ruby - Open3 がサブプロセスを終了していない
私は使用しています:
プログラムで使用されるコマンドを含むファイルがあり、この方法で使用しています
File.txt
いくつかのコマンドがあるのでprogram.exe
、次のことを行います:
powershell を使用すると、このコマンドは正常に機能し、期待どおりに機能します。
今、私はこれをファイル ( app.rb
) に持っています:
にアクセスしてこれを使用する場合、これを行うことhttp://localhost/process
でOpen3
機能します(100%確信はありませんが、何度か試した後、これが唯一のオプションだと思います)
コマンドを読み取り、実行します (これで問題ありません)。
ODBCメソッドを使用してDBから読み取ろうとします(これが私の問題です。
Open3
ブラウザーで表示できるように出力を受け取る必要がありますが、読み取ろうとするとOpen3
、認識していない別のプロセスが開始されると思います。 Open3 は進行し、それを待たずに終了します)出口
出口
私は次のことを発見しました:
- プロセスが終了するのを待つために
Thread.join
(この場合は) を使用しますが、機能しませんw.join
Open4
子プロセスを処理しているようですが、Windows では動作しませんProcess.wait(pid)
、この場合pid = w.pid
は 、また機能しませんTimeout.timeout(n)
、ここでの問題は、どれくらい時間がかかるかわからないことです。
これを処理する方法はありますか?(サブプロセスを待ってOpen3
いるので、適切な出力が得られます)。
python - Pythonを使用してシェルメールコマンドを実行する
同様のトピックに関する投稿の1つで提案されているように、次のコードを使用して電子メールを送信しました。しかし、メールは送信されていません。助言がありますか?
ruby - このコードで Ruby Thread オブジェクトが連続してインスタンス化されないようにするにはどうすればよいですか?
今までスレッドを使ったことがなかったのですが、今回はこれに頼らざるを得ないと思います。cURL コマンド ラインの stdout と stderr を別々に処理したいのは、プログレス インジケーター (stderr に書き込まれる) のキャリッジ リターンを改行に交換したいからです。
私の質問は、stdout (stdout.each_char) を処理するときに、ループ サイクルごとに新しい Thread インスタンスを作成しないようにするにはどうすればよいですか? 時間がかかると思います。一度インスタンス化してから、停止や実行などのメソッドを使用したいと思います.
ruby - Ruby UTF-16エンコーディングだと思います
Open3を使用してシェルコマンド(UTF-16を出力することが知られている)を呼び出すWindows上で実行されているRubyプログラムがあります。
UTF_16LE への force_encoding が機能せず、例外がスローされた場合、単純にバイトを保存し、JSON 文字列としてエンコードし、UTF_8 としてエンコードします。
まあ....例外がスローされ、レスキュー句でバイトの出力配列をキャッチしました。次のようになります。
何らかの形式のテキストに戻すにはどうすればよいですか。例えば私がする場合:
プログラムで [100, 111, 103] を「犬」または [224, 164, 149, 224, 165, 129, 224, 164, 164, 224, 165, 141, 224, 164, 176, 224, 164, 190] 戻る "カケラ" ? 私の出力バイト配列が何を意味するのかを理解する方法はありますか?
- - - - - - - - - - - - - アップデート - - - - - - - - - - - - ---
少し掘り下げましたが、「デコード」が問題ではないため、しばらく時間がかかりました。ただし、変数messageに保持した配列で次のことを行いました。
エラーメッセージがUTF-16LEではないという点で、私の問題は解決しました。
しかし、これを実行すると、次の結果が得られました。
この奇妙に見える文字列またはバイト シーケンスをより意味のある "कुत्रा" に変換するにはどうすればよいですか?
ruby-on-rails - Rubyでサブプロセスをできるだけ速く実行するには?
iOS および Web クライアントと連携する Rails アプリケーションがあります。現在、Open3 を使用して Rails コントローラーからサブプロセスを生成し、MongoDB で node.js を実行しているチャット サーバーにデータを送信しています。しかし、本番環境で数日後、サブプロセスによって Rails アプリが非常に遅くなり、CPU 使用率が大幅に増加することがわかりました。
長期的な解決策は、チャット サーバーを Express などの REST API フレームワークでラップすることです。しかし、短期的には、サブプロセスの実行を高速化する方法 (スポーン、実行など) を簡単に修正したいと考えています。
何か案は?
ruby - Rubyを介してcmdコマンドを実行する
私はcで書かれた他のプログラムを実行するプログラムを書いています。これが私の最初の試みです
実際の出力:
望ましい出力:
それを行うためのより良い方法を知っている場合は、教えてください。私はルビーが初めてです。