я пытаюсь настроить сервер для интеграционных тестов (спецификации на самом деле) через рубин и не могу выяснить, как управлять процессом.
таким образом то, что я пытаюсь сделать:
webrick не является требованием, но он включен в рубиновую стандартную библиотеку, таким образом, способность использовать его была бы большой.
надежда любой в состоянии помочь!
PS я работаю на Linux, также - эта работа для окон, не является моим основным приоритетом (прямо сейчас).
Стандартный способ - использовать системные функции fork (для дублирования текущего процесса), execute (для замены текущего процесса исполняемым файлом), kill (для отправки сигнала процессу о его завершении)
Например :
pid = fork do
# this code is run in the child process
# you can do anything here, like changing current directory or reopening STDOUT
exec "/path/to/executable"
end
# this code is run in the parent process
# do your stuffs
# kill it (other signals than TERM may be used, depending on the program you want
# to kill. The signal KILL will always work but the process won't be allowed
# to cleanup anything)
Process.kill "TERM", pid
# you have to wait for its termination, otherwise it will become a zombie process
# (or you can use Process.detach)
Process.wait pid
Это должно работать на любой системе типа Unix. Windows создает процесс другим способом
.Я пробовал вилку, но у нее есть своего рода проблемы, когда ActiveRecord участвует в обоих процессах. Я бы предложил плагин Spawn (http://github.com/tra/spawn). Он делает только вилку, но заботится о ActiveRecord.
.