2013-04-16 1 views
1

У меня было довольно много рубиновых консольных скриптов на терминале cygwin под Windows XP без каких-либо проблем с помощью ruby ​​1.9.3-p28 от rubyinstaller.ruby ​​(rubyinstaller) и нечетное поведение cygwin с методом get внутри цикла

Внезапно я замечаю это странное поведение. У меня есть следующий простой код:

while input = gets 
    puts input 
    puts "ok" 
end 

, который не дает никакого вывода вообще в консоли. Похоже, что часть input = gets делает поворот цикла по какой-то причине. Если я изменить сценарий таким образом

while true 
    puts "ok" 
end 

в то время как цикл работает, как ожидалось, но если я добавить строку input = gets чуть ниже puts "ok" он снова висит, и странно то, что даже не писать «ОК», чтобы консоль перед тем, как повесить. Кажется, что он ничего не делает, и диспетчер задач Windows показывает, что рубиновый процесс вообще не имеет активности.

Я также пробовал цикл loop do end, но поведение в точности то же самое.

Вместо этого все работает нормально, если я вообще не использую цикл.

Все, что я могу понять, это то, что это связано с тем, что stdin получает метод внутри цикла.

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

UPDATE (подробнее): скрипт корректно работает в командной оболочке Windows.

ответ

1

Я установил его:

require 'win32console' if RbConfig::CONFIG['host_os'].include? "mingw32" 

Я не знал, что я должен был использовать «win32console» драгоценный камень с Cygwin терминала даже в том случае, II я не выводя цвета, как до сих пор я был используя «win32console», только togheter с «colorize» gem, чтобы заставить цвета работать в командной строке Windows XP.

Я напишу напоминание об этом в верхней части моего кода ...

 Смежные вопросы

  • Нет связанных вопросов^_^