Webrick не останавливается и не перезапускается

До сих пор я использовал Linux Mint 13 и только что перешел на Fedora 17. С тех пор, как я переключился, я больше не могу остановить Webrick. Я использую Jetbrains Rubymine, и запуск сервера работает нормально, но как только я нажимаю «Стоп» или «перезагрузка», он каким-то образом отключается от процессов, и я не могу снова использовать этот порт, пока не перезагружу свой компьютер. Сначала я подумал, что это проблема с Rubymine, но когда я запускаю сервер в консоли, он делает то же самое. Я нажимаю ctrl-c, чтобы остановить его (и, похоже, это происходит), но как только я снова запускаю сервер на этом порту, он не работает из-за дублирующий адрес используется.


person Sean    schedule 27.08.2012    source источник
comment
Какую версию JRuby вы используете?   -  person Satish    schedule 27.08.2012
comment
также проверьте stackoverflow.com/questions/5891567/   -  person Satish    schedule 27.08.2012
comment
Извините, я новичок в переполнении стека и предполагал, что получу электронное письмо, когда получу ответ. Я еще не видел ни одного, но решил перепроверить. @Satish - я использую Ruby 1.9.2 с несколькими разными номерами патчей для каждого приложения. ВСЕ мои приложения, независимо от версии ruby, испытывают одну и ту же проблему. Похоже, что это НЕ относится к приложению, как указано в предоставленной вами ссылке. (кстати спасибо за это)   -  person Sean    schedule 29.08.2012


Ответы (1)


У меня есть эта ошибка на Mint (как я вижу, в отличие от вас) - машина Ubuntu всегда выходит нормально, нажав CTRL + C. Решение без перезагрузки компьютера: убить процесс Webrick. Найдите PID отсоединенного серверного процесса с помощью команды ps aux | grep rails, а затем уничтожьте его с помощью kill -9 <PID>

В одной строке вы можете запустить это в своем каталоге проекта:

kill -9 `cat tmp/pids/server.pid`

(Вы также можете установить эту команду в качестве псевдонима в вашем .bash_profile, чтобы ее было проще использовать)

Или нет никакого процесса Webrick, который можно было бы убить?

person Jakub Naliwajek    schedule 27.08.2012
comment
Странно.. У меня была запущена Mint 13, и я решил перейти на Fedora из-за нескольких ошибок, которые я больше не мог выносить, но, боюсь, это еще хуже. Что касается вашего временного исправления, я пробовал его раньше безуспешно, но ваш метод, похоже, работает. Теперь я вижу все запущенные процессы и смог их убить. быстрый вопрос, хотя, как вы собираетесь использовать в качестве псевдонима? Разве мне не нужно сначала найти pid, прежде чем я смогу запустить команду? Спасибо за вашу помощь. Я надеюсь, что кто-то знает корень проблемы, потому что это сводит меня с ума. - person Sean; 29.08.2012
comment
Если Webrick работает, то его PID находится в файле {APP_ROOT}/tmp/pids/server.pid, поэтому вам не нужно его искать, пока работает сервер. Итак, если вместо выполнения ctrl-c вы просто запустите эту команду kill в другом терминале, она немедленно уничтожит сервер Webrick. Вы можете создать псевдоним, поэтому вместо длинной команды kill -9 ... вам нужно будет ввести только killrails или что-то в этом роде, просто как и любой другой псевдоним в bash, см. раздел Как сделать псевдоним постоянным. - person Jakub Naliwajek; 29.08.2012
comment
Извините за то, что я так туго об этом, но это не работает для меня. Я понимаю, как использовать псевдоним в профиле bash, но часть, которую я не понимаю, — это общая команда для уничтожения рассматриваемого процесса. Вот какой у меня псевдоним: alias killapp=kill -9 ./tmp/pids/server.pid Я запускаю его в корне приложения. Он говорит мне: kill: ./tmp/pids/server.pid: аргументы должны быть идентификаторами процессов или заданий. Что я делаю неправильно? В очередной раз благодарим за помощь. - person Sean; 30.08.2012
comment
Большое спасибо! это очень поможет. Хотя это не окончательное решение проблемы, я пока отмечу ваш ответ, поскольку, похоже, больше ни у кого нет никаких идей. Еще раз спасибо. - person Sean; 31.08.2012