Как заставить выходные данные отображаться в окне cmd во время выполнения скрипта Ruby (Windows 7)

рубин 1.9.2 и 1.8.1

Мы запускаем наш ruby-скрипт из командной строки cmd (driver.rb). Затем сценарий ruby ​​выполняет следующую строку для выполнения команды приглашения cmd:

response = `choice /c 12 /n /m "1. Qual -- 2. Test"`

Я хотел бы, чтобы в окне подсказки отображался выбор, чтобы пользователь мог сделать выбор, а затем вернуть выбор.

При выполнении команды сообщение не отображается, но окно cmd ожидает ответа.

Когда я ввожу значение (1 или 2), он возвращает строку

(/c 12 /n /m "1. Qual -- 2. Test x) 

где x - это значение, которое я выбрал.

Когда скрипт ruby ​​​​выполняется, я вижу подсказку в окне cmd.

Когда мы запускаем, любой вывод скрипта ruby ​​(например, puts) появляется после завершения скрипта.

Есть ли способ, чтобы вывод переходил в окно cmd во время работы ruby, а не ждал, пока он закончится или, по крайней мере, появится команда приглашения cmd?

Буду признателен за любую помощь в этом вопросе.


person user798247    schedule 05.08.2011    source источник
comment
У меня нет этой проблемы. Я поместил (0..5).each { |i| puts i; sleep 1 } в файл ruby ​​и запустил его в cmd в Windows 7, и я получал вывод каждую секунду, а не все сразу в конце работы.   -  person Sony Santos    schedule 05.08.2011
comment
Почему вы раскошеливаться, чтобы выполнить выбор? Вы могли бы отлично работать с чистым рубином, используя gets и даже лучше, используя гем Highline: rubygems.org/gems/highline   -  person Luis Lavena    schedule 05.08.2011
comment
Может быть, вам будет легче помочь, если вы расскажете о своем вопросе, ответом на который, по вашему мнению, является «выбор». Почему вы хотите, чтобы кто-то выбрал Qual или Test после запуска теста? Есть способы передать параметры в ruby ​​или около миллиона других способов иметь параметры, не задавая вопрос в подсказке DOS.   -  person Dave McNulla    schedule 06.08.2011
comment
Я не вижу Watir в приведенном выше коде, почему у него есть тег Watir?   -  person Chuck van der Linden    schedule 09.08.2011


Ответы (1)


Если вам требуются или включены другие скрипты ruby, код в этих скриптах будет выполнен. Это не проблема, если все, что они делают, это определяют классы, методы и т. д. Однако, если в этих файлах есть фактический код, который не является частью определения объекта или метода, он будет выполняться перед любым другим управлением потоком и т. д. в вашем основном скрипте.

Я не могу точно сказать, происходит ли это с вами, но похоже, что это может иметь место в зависимости от того, как вы пытаетесь структурировать вещи.

person Chuck van der Linden    schedule 06.08.2011