2012-03-05 9 views
1

現在、予想される設定値を定義し、値の設定ファイルを読み込み、最終的には設定ファイルに指定されていない値があるかどうかを確認するスクリプトを使用しています。ルビーのユーザー入力とパイプ入力を併用する

例期待される設定項目:

username password command directories 

例のコンフィギュレーションファイル:

username:bob 
command:"rm -rf/&& echo bwahahahahaha" 

例プロンプト:

password? userinput 
directories? userinput 

問題の核心ではなく、すべての設定項目が知られているということです実行時の前に実行され、テキストファイルや別のプログラムの出力からパイプインすることができますが、 (プロンプトをトリガーする)構成項目にまだギャップが残っている可能性があります。

[host]$ parametergeneratingscript.rb | paramaterreceivingscript.rb  # still needs to prompt for password 

IO#ttyを使用していますか?私はパイプ入力を検出し、STDINから適切に読むことができますが、これはユーザープロンプト(これもSTDINから来ています)全体を歩いています。私は設定/プロンプトスキームの周りを快適に変更していますが、逃げる前に、ttyとパイプ入力の間でSTDINのソースを「切り替える」グレースフルな方法があるのだろうかと疑問に思っていましたか?

答えて

2

STDIN.reopen('/dev/tty')を試しましたか?私はこれがSTDINをパイプからではなくキーボードから読むことを再開すると信じています。

+1

実際に問題を回避するように設計されました.Piped input reqが削除されたため、OptionParser/Highlineが最適なソリューションになりましたが、最初の質問には答えません。入力をありがとう、私はテストするために数分を取得するときにこの提案を与える必要があります。 – vengeance

関連する問題