Обувь Rb Имя хоста неизвестно: sub.localhost:3000

Я использую конструктор графического интерфейса обуви и получаю следующую ошибку, когда делаю простой HTTP-запрос на свой локальный сервер Rails.

Поэтому, когда я делаю запрос

res = Net::HTTP.get(URI.parse("http://sub.localhost:3000"))

Я получаю сообщение об ошибке:

Hostname not known: sub.localhost
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/resolv-replace.rb:12:in `rescue in getaddress'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/resolv-replace.rb:9:in `getaddress'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/resolv-replace.rb:23:in `initialize'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:879:in `open'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:879:in `block in connect'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/timeout.rb:73:in `timeout'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:878:in `connect'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:863:in `do_start'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:852:in `start'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:1375:in `request'
shoes.rb:24:in `request'
shoes.rb:63:in `block (3 levels) in <main>'
-e:1:in `call'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/resolv-replace.rb:12:in `rescue in getaddress'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/resolv-replace.rb:9:in `getaddress'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/resolv-replace.rb:23:in `initialize'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:879:in `open'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:879:in `block in connect'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/timeout.rb:73:in `timeout'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:878:in `connect'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:863:in `do_start'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:852:in `start'
/Applications/Shoes.app/Contents/MacOS/lib/ruby/2.2.0/net/http.rb:1375:in `request'
shoes.rb:24:in `request'
shoes.rb:63:in `block (3 levels) in <main>'
-e:1:in `call'

В моем файле hosts есть 127.0.0.1 sub.localhost, и я могу без проблем добраться до адреса и сделать запросы к нему, просто не в проекте обуви.

Я следовал этому совет вопроса и привязал мой локальный IP-адрес ex 123.12.12.1, но получил ту же ошибку Hostname not known: sub.123.12.12.1

Это говорит об удалении строки resolv-replace.rb:9:in в проекте обуви, но я получаю ту же ошибку Hostname not known: sub.123.12.12.1

я на мак


person teddybear    schedule 17.11.2017    source источник
comment
Я видел это...   -  person SoEzPz    schedule 17.11.2017


Ответы (1)


Используйте пользовательский преобразователь DNS чтобы убедиться, что Ruby просматривает файл hosts:

require 'resolv-replace'

hosts_resolver = Resolv::Hosts.new('custom_hosts')
dns_resolver = Resolv::DNS.new

Resolv::DefaultResolver.replace_resolvers([hosts_resolver, dns_resolver])

require "net/http"
require "uri"

res = Net::HTTP.get(URI.parse("http://sub.localhost:3000"))

Теперь Net::HTTP будет использовать ваш собственный преобразователь, который сначала проверяет hosts и успешно разрешает ваши пользовательские домены.

person anothermh    schedule 21.11.2017
comment
Это потрясающе. Я бы хотел, чтобы вы приехали сюда раньше, я заплатил за ngrok, чтобы заставить его работать. ха. - person teddybear; 22.11.2017