2016-10-11 2 views
0

Nach OS Sierra Aktualisierung habe ich versucht, mit rspec spec meiner lokalen Testsuite ausgeführt wird, diese sofort brach diese Stack-Trace geben:socket.gethostbyname derzeit keine lokalen Hostnamen finden, nachdem zu mac osx Aktualisierung sierra

Coverage report generated for RSpec to /Users/October/Documents/code/clients-api/coverage. 38/101 LOC (37.62%) covered. 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'torid'. (Bundler::GemRequireError) 
Gem Load Error is: getaddrinfo: nodename nor servname provided, or not known 
Backtrace for gem load error is: 
/Users/October/.rvm/gems/[email protected]/gems/torid-1.2.4/lib/torid/generator.rb:73:in `gethostbyname' 
/Users/October/.rvm/gems/[email protected]/gems/torid-1.2.4/lib/torid/generator.rb:73:in `create_node_id' 
/Users/October/.rvm/gems/[email protected]/gems/torid-1.2.4/lib/torid/generator.rb:79:in `<class:Generator>' 
/Users/October/.rvm/gems/[email protected]/gems/torid-1.2.4/lib/torid/generator.rb:21:in `<module:Torid>' 
/Users/October/.rvm/gems/[email protected]/gems/torid-1.2.4/lib/torid/generator.rb:8:in `<top (required)>' 
/Users/October/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require' 
/Users/October/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require' 
/Users/October/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency' 
/Users/October/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require' 
/Users/October/.rvm/gems/[email protected]/gems/torid-1.2.4/lib/torid.rb:22:in `<top (required)>' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:91:in `require' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:91:in `block (2 levels) in require' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:86:in `each' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:86:in `block in require' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:75:in `each' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler/runtime.rb:75:in `require' 
/Users/October/.rvm/gems/[email protected]/gems/bundler-1.13.2/lib/bundler.rb:106:in `require' 
/Users/October/Documents/code/clients-api/config/application.rb:16:in `<top (required)>' 
/Users/October/Documents/code/clients-api/config/environment.rb:2:in `require' 
/Users/October/Documents/code/clients-api/config/environment.rb:2:in `<top (required)>' 
/Users/October/Documents/code/clients-api/spec/spec_helper.rb:6:in `require' 
/Users/October/Documents/code/clients-api/spec/spec_helper.rb:6:in `<top (required)>' 
/Users/October/Documents/code/clients-api/spec/consumers/postback_notifier_consumer_spec.rb:1:in `require_relative' 
/Users/October/Documents/code/clients-api/spec/consumers/postback_notifier_consumer_spec.rb:1:in `<top (required)>' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1226:in `load' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1224:in `each' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1224:in `load_spec_files' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:97:in `setup' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:85:in `run' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:70:in `run' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:38:in `invoke' 
/Users/October/.rvm/gems/[email protected]/gems/rspec-core-3.2.3/exe/rspec:4:in `<top (required)>' 
/Users/October/.rvm/gems/[email protected]/bin/rspec:23:in `load' 
/Users/October/.rvm/gems/[email protected]/bin/rspec:23:in `<main>' 
/Users/October/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `eval' 
/Users/October/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `<main>' 

ich weiter im Inneren des torid gem suchten den Code-Block zu finden, die versagt:

def self.create_node_id(pid = Process.pid) 
    hostname = Socket.gethostbyname(Socket.gethostname).first 
    random = SecureRandom.hex(16) 
    FNV.new.fnv1a_64("#{hostname}-#{pid}-#{random}") 
end 

Wenn ich es mit byebug inspiziert:

(byebug)hostname = Socket.gethostbyname(Socket.gethostname).first

=>(byebug)SocketError Exception: getaddrinfo: nodename nor servname provided, or not known nil

Auch gethostname den richtigen Hostnamen zurückgibt:

(byebug)Socket.gethostname

=>(byebug) "OctobersMac"

An dieser Stelle habe ich versucht, wieder zu installieren homebrew , postgres, xcode, rvm und ruby. Ich stellte auch sicher, dass mein hostname zu OctobersMac eingestellt wurde. Es wird seltsam, dass wenn ich meine Ports nach diesem Hostnamen überprüfe, keine offen sind. Ich setze es mit scutil --get HostName und es wird korrekt zurückgegeben. Ich habe auch keine Firewalls eingerichtet.

Ich öffnete zwei andere Apps und lief rspec spec, nur um sicher zu sein, dass es nicht nur eine App war. Der kam zum ersten Mal wieder mit der exakt gleichen Fehler und der zweite bekam einen anderen Fehler, obwohl ich das Gefühl habe, es hat etwas mit der ursprünglichen Frage zu tun:

OctobersMac:community October$ rspec spec 
"Railtie has run for Postgis!!!!" 
/Users/October/.rvm/gems/[email protected]/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize': could not connect to server: Connection refused (PG::ConnectionBad) 
    Is the server running on host "localhost" (::1) and accepting 
    TCP/IP connections on port 5432? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 5432? 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `new' 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect' 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:242:in `initialize' 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-postgis-adapter-3.0.0/lib/active_record/connection_adapters/postgis_adapter.rb:51:in `initialize' 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-postgis-adapter-3.0.0/lib/active_record/connection_adapters/postgis/create_connection.rb:38:in `new' 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-postgis-adapter-3.0.0/lib/active_record/connection_adapters/postgis/create_connection.rb:38:in `postgis_connection' 
    from /Users/October/.rvm/gems/[email protected]/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection' 

Hat jemand eine Ahnung, was hier vor sich geht? Ich bin am Ende meines Seils und Google hat nicht viel zu verwandten Themen zu Mac OsX Sierra. Vielen Dank für die Zeit, die Sie für mein Problem haben können.

+0

Die Frage sprachunabhängig zu sein scheint: http://stackoverflow.com/questions/39970606/gaierror-errno-8-nodename- nor-servname-bereitgestellt-oder-nicht-bekannt-mit-macos-sie – Vovanrock2002

+0

Sie können ein C-Programm schreiben, das Socket.Gethostbyname (Socket.Gethostname) tut und sehen, ob es funktioniert. Wenn nicht, einen Fehler bei Apple einreichen und versuchen, von 'gethostbyname' zu' getaddrinfo' zu wechseln - letzteres ist veraltet. Wenn das C-Programm funktioniert, melden Sie einen Fehler in der Ruby-Community. – Vovanrock2002

+0

Hier ist ein C-Programm, das Leute verwenden können, um ihre Namenssuche auf Sierra https://gist.github.com/copiousfreetime/44a950fb0fa8896450af75f919dbe7f1 zu testen – copiousfreetime

Antwort

0

Es scheint, dass dies ein Problem mit Sierra ist. Die Torid Gem Autoren haben eine fix. Im Kommentar stellen sie fest:

MacOS Sierra nicht immer den addrinfo Wert für die Hostnamen finden, die ein Fehler nicht passieren und torid verursachen können arbeiten.

Ich stieß auf ein ähnliches Problem mit dem Logstash Juwel, das auch fixed war. In ihrem Code haben sie einen Kommentar (in der default_source-Methode), die besagt:

# NOTE: MacOS Sierra and later are setting `.local` 
# hostnames that even as real hostnames without the `.local` part, 
# are still unresolvable. One reliable way to get an IP is to 
# get all available IP address lists and use the first one. 
# This will always be `127.0.0.1`. 
Verwandte Themen