私は次のことを達成したいと思います:ルビー - フォークプロセスのset_trace_func
は、いくつかのset_trace_funcイベントを登録するRubyのコマンドラインユーティリティを構築するには、その後、あなたは(rspec
言う)に渡すものは何でもルビー実行可能な引数を呼び出します。登録されたイベントは、呼び出されたコマンドに引き継がれます。
myutility
の擬似コード:
set_trace_func() # Set some events here
exec(ARGV.join(' ')) # Execute argument passed
その後myutility rspec
として呼び出します。
実際のところ、は、任意のコマンド(ルビーシムを使用している限り)にトレースポイントを登録します。私が試してみました
もの:
exec
は明白な理由(それは完全にプロセスを置き換える)ため、動作しません。- popen、system、backticks。これらは独立したプロセスを開始します。
私はIPCの何らかの形を使うことができますが、私は自分のユーティリティで起動しているコマンドを制御しています。これはそうではありません;任意のRuby実行可能引数を受け入れたいと思います。
これは可能ですか?私が密接に見ていないことの1つはdrbですが、それも外部の議論との干渉を前提としています。
素晴らしいです。私はコマンドラインからruby -rを実行していました。 execがこれを許可したのを知らなかった。これは正解です。 1つの簡単なフォローアップの質問:どのように私はルビーを呼び出すコマンドでこの作業を行うことができますか? rspecのように。今のところそれは誤りで、それは自然にrspecを見つけることができないと言っています。 –
私が覚えているように、rspecはデフォルトではrubyを起動しませんが、drbで動くことができます。また、 'spring'-ed実行可能ファイルに' – Vasfed
'を実行できます。あなた自身がスクリプトをフルパスで(またはランナーの前/後に)渡して – Vasfed