У меня есть этот скрипт, который при выполнении переводит пользователя в сеанс IRB.
Все хорошо, но когда я использую каналы *nix для получения ввода (например, с 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.