`rails` больше не привязан к 10.0.0.4:3000

Я только что установил Ruby 2.2.0 с Rails 4.2 на VirtualBox с OpenBSD 5.7, но почему я не могу подключиться к http://10.0.0.4:3000/ при выполнении rails s?

% rails s
=> Booting Puma
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Puma 2.11.0 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:3000

Однако это работает, если я явно определяю IP и порт:

% rails s -p 3000 -b 10.0.0.4
=> Booting Puma
=> Rails 4.2.0 application starting in development on http://10.0.0.4:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Puma 2.11.0 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://10.0.0.4:3000

Но должен ли я действительно все это делать?


person Mark Boulder    schedule 21.01.2015    source источник
comment
stackoverflow.com/questions/3842818/   -  person Arup Rakshit    schedule 21.01.2015
comment
stackoverflow.com/questions/18103316/   -  person Arup Rakshit    schedule 21.01.2015
comment
Я не понимаю, насколько они актуальны, извините.   -  person Mark Boulder    schedule 21.01.2015


Ответы (1)


Кажется, я читал (и ваш вывод журнала подтверждает это), что rails s (4.2) больше не привязывается к 0.0.0.0 (все интерфейсы), а только к локальному хосту. Итак, если нет новой опции конфигурации, чтобы заставить ее работать, как раньше, вам нужно будет запустить ее, как вы, передав IP-адрес. Вы можете передать 0.0.0.0, чтобы получить старое поведение.

РЕДАКТИРОВАТЬ: Да, см. раздел 3.3 по адресу http://guides.rubyonrails.org/4_2_release_notes.html.

Из-за изменений в стойке сервер rails теперь прослушивает локальный хост вместо 0.0.0.0 по умолчанию. Это должно иметь минимальное влияние на стандартный рабочий процесс разработки, поскольку как http://127.0.0.1:3000, так и http://localhost:3000 продолжит работать на вашем собственном компьютере.

Однако с этим изменением вы больше не сможете получить доступ к серверу Rails с другого компьютера, например, если ваша среда разработки находится на виртуальной машине, и вы хотите получить к ней доступ с хост-компьютера. В таких случаях запустите сервер с параметром rails server -b 0.0.0.0, чтобы восстановить старое поведение.

Если вы сделаете это, обязательно правильно настройте брандмауэр, чтобы только доверенные машины в вашей сети могли получить доступ к вашему серверу разработки.

person Philip Hallstrom    schedule 21.01.2015
comment
Это большой пиздец... Делать регрессию и нарушать совместимость... только для того, чтобы защитить ламеров от выставления их сервера разработки в локальную сеть? Это работа брандмауэра... Если брандмауэра нет, это ваша проблема... Почему я должен за это платить??? Думаю, в следующей версии они заменят rails на start_ruby_on_rails_server_on_localhost... - person Brazhnyk Yuriy; 23.02.2015