Я использую ruby 1.8.7 и rails 2.3.4. Я разрабатываю плагин, поэтому у меня не слишком много свободного времени.системные и вилочные вызовы блокируют порт 3000
В моем контроллере мне нужно вызвать задачу грабли. Задача рейка займет больше времени, чтобы закончить, так что я после подхода, упомянутого в Railscast, который
system "rake #{task} &"
Это решение отлично работает и все нормально. Я знаю, что это решение не будет работать на Windows, и я в порядке.
Я запустил свой сервер в порту 3000. Был вызван контроллер, который запустил задачу рейка в фоновом режиме. Однако, если я ctrl + c мой скрипт/сервер, и если я попытаюсь перезапустить сервер, тогда я получу эту ошибку.
Адрес уже используется - связывания (2) (Errno :: EADDRINUSE)
Затем я изменил код, чтобы сделать это
fork do
system "rake #{task} &"
end
все тот же вопрос.
Кто-нибудь, как мне обойти эту проблему с портом 3000, блокируется. Также поможет любое объяснение того, почему задача рейка блокирует порт 3000.
Не работает. Пересмотренные код p1 = вилка {система (команда)} Process.detach (p1) все еще получаю адрес уже используется –
Просто, чтобы убедиться, что не осталось свободных концов, вы могли бы изменить вилку Process.fork? –
та же проблема с Process.fork тоже. –