Ответ 1
Попробуйте запустить сервер на порту 80 вместо этого, ваш брандмауэр, вероятно, блокирует порт 3000.
У меня есть приложение rails, запущенное на localhost: 3000. Я хочу получить доступ к нему с другого компьютера в той же сети. Я чувствую, что делаю это раньше, но это огорчает меня. Я могу ping IP-адрес компьютера просто отлично, но поражение ip: 3000 в браузере не работает. Я также попытался запустить rails s -b ipaddress
, и не повезло.
Предложения?
Попробуйте запустить сервер на порту 80 вместо этого, ваш брандмауэр, вероятно, блокирует порт 3000.
После того, как ваш брандмауэр на стороне сервера открыт для входящего соединения на высоких портах (обычно это правда, а по умолчанию - 3000, поэтому вам, вероятно, ничего не нужно), вы также должны запустить сервер
rails server -b 0.0.0.0
который связывает его с универсальным адресом. Он привязывается к localhost
по умолчанию.
Используя этот метод, вам не нужно связываться с портом 80, но вам может понравиться следующее:
rails server -b 0.0.0.0 -p 80
(Если вы используете rvm, вам может понадобиться использовать rvmsudo
)
Чтобы сделать это изменение более постоянным, измените свой config/boot.rb
и добавьте следующее:
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '0.0.0.0', Port: 3000)
end
end
end
Тогда вам нужно использовать только rails s
Источник: fooobar.com/questions/60840/...
rails server -b 0.0.0.0 -p 8000
Это сработало для меня. Нет проблем с брандмауэром и нет необходимости предоставлять права суперпользователя.
Предполагая, что Webrick запускается без проблем, это 100% проблема с брандмауэром. Вы должны предоставить некоторые спецификации, например, какую операционную систему работает ваш хост, и имеют ли у вас права администратора при управлении брандмауэром.
Если вы работаете в Linux и запускаете брандмауэр iptables, вам нужно добавить правило для приема трафика через порт 3000. Он будет выглядеть примерно так:
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
Эта команда будет одноразовым решением, но вам нужно будет расширить свои текущие правила iptables script, чтобы сделать их постоянными каждый раз, когда ваша система загружается или входит в систему.
Если вы используете Windows, в зависимости от того, используете ли вы XP или Vista/7, вам нужно сделать что-то подобное. Я предполагаю, что вы находитесь в среде Vista/7, и вам просто нужно будет следовать инструкциям, приведенным в этом руководстве http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall.
Да, это был хороший ответ вообще:
rails server -b 0.0.0.0
Если вы используете Ubuntu, вам, вероятно, придется открыть порт в брандмауэре:
sudo ufw allow 3000
Если ваша система работает в VirtualBox, вам необходимо проверить Настройки сети.
В случае сетевого режима NAT
вам нужно нажать на расширенные параметры и там до Переадресация портов. Добавьте правило для TCP protocoll, хост-порт 3000 (или любой другой) и гостевой порт 3000.
Одна из причин заключается в том, что ваш ip не привязан к серверу rails. Вы можете связать ip с параметром -b.
Usage: rails server [mongrel, thin etc] [options]
-p, --port=port Runs Rails on the specified port.
Default: 3000
-b, --binding=IP Binds Rails to the specified IP.
Default: localhost