2016-11-30 3 views
0

STDINは、ファイルを再度開くことができるファイルを使用せずにSTDINを再度開きます何らかの方法で?ルビー

答えて

0

なぜ同じように、ハンドルを再割り当てない:

$stdin = StringIO.new('text') 

次に、あなたが定期的に$stdinハンドルと同じようにそれを扱うことができます:

gets 
# => "text" 

それはdocumentation on reopen implies you can do thisでなく、何のために本当です理由StringIOはIOから派生しないので、ファイルハンドルとしてカウントされず、それによって使用することはできません。

+0

RSpecテストでユーザー入力をスタブしようとしています。 $ stdin assigningはそれに対しては機能しません。 – Michael

+0

読み込みを行っているコードを制御できたら、入力ソースのパラメータを試してみて、テスト目的でこのように微調整できます。 – tadman

+0

UIには[HighLine gem](https://github.com/JEG2/highline)を使用します。あなたが何を示唆しているかのように[何か](http://www.rubydoc.info/github/JEG2/highline/master/Kernel)を行うことができるように見えます。しかし、私はそのための技術を抱かない。 – Michael