La gestione del terminale di ingresso-uscita è arte oscura e misteriosa. Chiunque stia cercando di produrre l'output colorized di bash
in windows PowerShell
tramite ssh
lo sa. (E le varie abitudini di scorciatoia come Ctrl + Backspace peggiorano le cose)
Uno dei possibili motivi del tuo problema è la gestione dei caratteri speciali. Ogni terminale là fuori può digitare caratteri in numero di modi diversi e analizza il proprio output in cerca di determinate sequenze di caratteri per passare da uno stato all'altro.
F.e. here si possono trovare sequenze ANSI di codice di escape, uno dei possibili standard supportati tra diversi tipi di terminali.
Vedere lì Esc[5;45m
? Ciò farà lampeggiare tutto il seguente output su sfondo magenta. E ci sono molte altre cose come quelle là fuori.
Quindi, la risposta alla tua domanda è letteralmente: il tuo comando choice
disturba qualcosa con le modalità di output usando speciali sequenze di escape, e ruby ottiene delle interruzioni in quella strana modalità speciale di operazione del terminale.
Ma più utile sarà il collegamento a HighLine gem documentation. Perché si potrebbe voler implementare comportamenti specifici della piattaforma e invadenti quando è possibile implementare lo stesso con about 12 LOC? Tutto il rispetto per il Gist va a botimer, mi sono imbattuto nel suo codice solo usando la ricerca.
Dovresti essere più chiaro sulla natura del comportamento strano. L'ho provato e ho notato che non accettava i dati a meno che non avessi premuto il tasto Invio due volte, dopo aver eseguito il comando 'system (" choice/c YN ")'. Una lettera in più a volte si infilava di nascosto anche lì. E 'quello che succede sulla tua parte? – KChaloux
@KChaloux È esattamente quello che succede, sì. Modificherò il mio post per includere tali dettagli. – itdoesntwork
Questo è strano, Windows non rovina mai nulla. –