Я пишу веб-отладчик для Ruby, но для этого мне нужно иметь возможность вызывать отладчик Ruby из программы Ruby на стороне сервера. Это когда-нибудь было сделано? Это вообще возможно?
Готовый конечный продукт позволит редактировать, выполнять и выполнять код Ruby, используя только веб-браузер. Код ruby, который должен быть отлажен, будет «вычисляться» на стороне сервера.
С тех пор один из пользователей stackoverflow указал в правильном направлении, который предложил использовать popen или ожидаемо. Я попробовал оба из них сейчас, но столкнулся со следующими проблемами:
popen: при ожидании консоли вы должны использовать блок тайм-аута, чтобы сообщить об окончании вывода консоли отладки (терминал командной строки может обнаружить это, так почему не может ruby).
Ожидайте: В программе ниже входы отладчика не синхронизированы с отладчиком. Почему это так?
require 'pty'
require 'expect'
$expect_verbose = true
PTY.spawn("rdebug deb.rb") do |from_debugger, to_debugger, pid|
a=nil
while ( a != "end" ) do
from_debugger.expect(/\(rdb:1\)/ ) do |input|
a = gets
to_debugger.puts( a + "\n" )
end
from_debugger.flush
end
end