Управление IRB через именованный канал (вместо STDIN/STDOUT)
Вопрос
Можно ли запустить Ruby IRB через именованный канал, чтобы я мог отправлять команды и получать результаты удаленно?
Обычно я хотел бы использовать движок IRB, но иметь другой пользовательский интерфейс (вероятно, написанный на .Net).
Решение
Я так думаю - у меня это сработало (mac os x):
в терминале 1:
mkfifo rpipe
в терминале 2:
tail -f rpipe | irb
в терминале 1:
echo "puts 'hi'" > rpipe
в терминале 2 (выход):
puts 'hi'
hi
nil
Немного раздражает, что исходная команда также выводится, но близко...
Другие советы
Кажется (я только что попробовал);просто пропустите ввод-вывод через именованный ppipe, и все в порядке.
Но я должен спросить, почему?
В частности, почему бы вам просто не запустить его как подпроцесс?
Не связан с StackOverflow