問題タブ [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 - Thor: stdout または stderr をキャプチャせずにコマンドを実行し、エラーで失敗する
別のツールからいくつかのテストを実行するための Thor スクリプトを作成しています。つまり、シェル コマンドを実行しています。コマンドからの stdout と stderr を継続的にコンソールに出力したいと思います。
最初の試みは単にバッククォートを使用することでしたが、当然、stdout/stderr は出力されません (むしろ、stdout は戻り値に取り込まれます)。
私の次のアプローチは、次のように Open3 を使用することでした。
ただし、上記のアプローチでは、stdout と stderr の両方から出力全体が取得され、最後にのみ出力されます。私のユースケースでは、失敗したテストと合格したテストの出力が利用可能になったときに表示したいと思います。
http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.htmlから、ストリームをチャンク単位で、つまり のgets()
代わりに を使用して読み取ることができることがわかりましたread()
。例えば:
それは最善かつ最もクリーンなアプローチのように見えますか? stderrの前に手動で stdout を印刷しようとする必要があるのは問題ですか?
ruby - 次の引数を「STDIN」に渡す
私はopen3を使用STDIN
してプログラムに渡し、次に読み取りと解析を行ってSTDOUT
います。e0
私のプログラムは、、e1 e2
などの形式の引数を期待しています。
新しい引数が与えられるたびに、STDOUT
変化します。引数として渡す次の数値を与える最初の結果を解析した後、次の引数を渡す方法がわかりません。これが私のコードです:
次の引数は に格納され@next_states
、1 つまたは複数の数値にすることができます。この配列の要素を使用して、プログラムの次の部分に進み、再度解析するにはどうすればよいですか?