Сервер Rails не работает?
Я следую за первым учебником по Ruby on Rails 3 от PeepCode, и примерно через 27-29 минут они заставляют нас запускать сервер Rails. Насколько я знаю, я успешно установил Rails (и Ruby).
Когда я запускаю команду rails server
(из командной строки Windows 7 в соответствии с инструкциями из видео), я получаю сообщение:
=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-12-02 18:37:57] INFO WEBrick 1.3.1
[2011-12-02 18:37:57] INFO ruby 1.9.3 (2011-10-30) [i386-mingw32]
[2011-12-02 18:37:57] INFO WEBrick::HTTPServer#start: pid=5584 port=3000
И он не возвращается к приглашению, указывая, что он работает. Кроме того, для меня (и по сравнению с видео) это выглядит как успешное сообщение.
Тем не менее, когда я перехожу к URL, http://0.0.0.0:3000
По указанию видео я получаю сообщение об ошибке (в то время как видео открывается на странице индекса по умолчанию для Ruby). Я получаю ошибку:
Error 108 (net::ERR_ADDRESS_INVALID): Unknown error.
Поскольку я использую Google Chrome, он также говорит:
Возможно, веб-страница по адресу http://0.0.0.0:3000/ временно не работает или она постоянно перемещена на новый веб-адрес.
Итак, мне было интересно, как это исправить?
2 ответа
0.0.0.0 - это IP-адрес, к которому привязан Вебрик. Это означает "слушать на всех интерфейсах". Другими словами, вы можете подключиться к этому приложению с внутреннего адреса (localhost или 127.0.0.1), а также с внешнего адреса в сети (192.168.1.x или 10.0.10.x или доменного имени, которое разрешается в адрес этой машины есть в сети). Серверу все равно, откуда поступил запрос.
Однако, если вы запустили сервер rails с параметром -b или --binding и указали серверу привязаться к 127.0.0.1, сервер не будет отвечать на запросы к внешнему интерфейсу. Вы все еще можете использовать 127.0.0.1 или localhost, но не можете подключиться к этому серверу, используя его внешний IP-адрес локально или с другого компьютера.
Переход на http:// 0.0.0.0:3000 работает в моей системе Linux, и, скорее всего, вы смотрели скринкаст с использованием Mac, который также работал. Я предполагаю, что 0.0.0.0 не поддерживается в Windows.
Просто используйте localhost, если вы находитесь на ящике, или IP-адрес ящика, если вы обращаетесь к нему с другого компьютера. Это то, что я делаю, даже когда я работаю на машине, которая понимает 0.0.0.0.
Вы можете запустить сервер с помощью этой команды:
rails server -b localhost
Но как ленивая машинистка, по моему .bash_aliases
У меня есть этот псевдоним
alias rs='r s -b localhost'
С помощью псевдонима я могу запустить сервер просто:
rs