Как упомянуто выше, похоже, что это дубликат другой проблемы, хотя в этой проблеме конкретно упоминаются webrick и подключение к удаленному рабочему столу, ни одного из которых я не искал, так как я не знал, что это было специфично для webrick.
Так что я думаю, что следует отметить, что это НЕ неверная конфигурация виртуальной машины или настроек BIOS или чего-то подобного.Это является строго проблемой вебрика.Другие службы работают нормально, если они не пытаются выполнить обратный поиск DNS.
Проблема связана с настройкой Webrick по умолчанию, чтобы попытаться выполнить обратный поиск DNS, который имеет проблемы при сбое поиска, так как это имеет тенденциюделать последовательно для меня на моей локальной машине.
Есть несколько способов исправить это.
Взломать / etc / hosts
Первый - взломать /etc/hosts
поэтому на вашем клиентском компьютере есть запись.Взлом /etc/hosts
является полу-продвинутым, но в основном сводится к выяснению IP-адреса вашего хоста и добавлению строки в ваш файл /etc/hosts
.Для этого требуются полномочия корневого уровня.
- Получите ваш IP-адрес - это будет видно в консоли Rails при выполнении запроса и будет выглядеть примерно так:
Started GET "/" for 10.0.2.2 at Tue Aug 21 11:33:23 -0700 2012
- в этом случае,IP-адрес 10.0.2.2. - Добавьте строку к
/etc/hosts
, чтобы определить этот IP-адрес: 10.0.2.2 Nerdmaster
Все должно быть хорошо!
Отключить демон
Похоже, это работает для некоторых пользователей Ubuntu:
service avahi-daemon stop
Учитывая, что вы убиваете службу, могут быть другие приложения, у которых есть проблемы.Это, вероятно, лучше всего как временная мера, а не как постоянная, но я очень мало знаю об услуге, поэтому не берите на себя слово:)
Для этого также требуются разрешения на уровне root.
Взломать Webrick
Я действительно презираю взлом ядра кода Ruby, который я должен повторно взламывать при каждом обновлении, но это то, что многие люди делают:
- Найдите свой
webrick/config.rb
- Может быть в
/usr/lib/ruby/[version]/webrick/config.rb
, если вы используете обычный Ruby - Если вы используете RVM, вам нужно будет найти соответствующий каталог ruby, например,
/home/username/.rvm/rubies/[version]/lib/ruby/[version]/webrick/config.rb
- Я не знаю, Джек, о других опциях, таких как rbenv
- В худшем случае, попробуйте
find / -type d -name "webrick"
- Редактировать в своем любимом редакторе (очевидно, это будет vim)
- Ищите
:DoNotReverseLookup => nil
. - Измените
nil
на true
. - Если вы не видите эту настройку, вы можетеиспользовать хак
/etc/hosts
выше.
Если вы не используете rvm или что-то подобное, для этого потребуется pe уровня rootrmissions.
Не используйте webrick
Я не думаю, что это реальное решение, поскольку webrick иногда является вашим лучшим (или, по крайней мере, самым быстрым) вариантом, но вы можете попробовать другойсервер.Тонкий и монгрел, кажется, имеют хорошую поддержку и, основываясь на том, что говорят другие с этой проблемой, похоже, не делают обратного поиска DNS.Я не пробовал эти подходы, поэтому точно не знаю, насколько они хороши.
Это можно сделать без прав доступа root.