У меня есть этот скрипт, который переводит пользователя в сеанс IRB при выполнении.
Все хорошо, но когда я использую * nix pipe для получения ввода (например, с cat
), сеанс IRB заканчивается немедленно.
Я мог бы уменьшить скрипт (назовем его myscript.rb) до следующего:
require 'irb'
if $stdin.stat.size > 0
@text = $stdin.read
else
@text= "nothing"
end
ARGV.clear
IRB.start
Когда выполняется как: ruby myscript.rb
, я оказываюсь в сеансе IRB (как и ожидалось).
Но (при условии, что foo.txt
существует в cwd
): cat foo.txt | ruby myscript.rb
просто напечатает приглашение IRB, а затем сеанс IRB будет закрыт (меня сбрасывают до $ bash).
Какие-нибудь известные обходные пути или идеи?
Кстати: он имеет такое же поведение на ruby 1.8.7, как и на 1.9.2.