У меня было довольно много рубиновых консольных скриптов на терминале 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.