Sha256: 4ea6bcdcf284c03742f58e366f3691f9914bdd1ba1c74b60bf7c84d094e714d4

Contents?: true

Size: 736 Bytes

Versions: 8

Compression:

Stored size: 736 Bytes

Contents

module Specjour
  module SocketHelper
    Socket.do_not_reverse_lookup = true

    def ip_from_hostname(hostname)
      Socket.getaddrinfo(hostname, nil, Socket::AF_INET, Socket::SOCK_STREAM).first.fetch(3)
    rescue SocketError
      hostname
    end

    def hostname
      @hostname ||= Socket.gethostname
    end

    def local_ip
      @local_ip ||= UDPSocket.open {|s| s.connect('74.125.224.103', 1); s.addr.last }
    end

    def current_uri
      @current_uri ||= new_uri
    end

    def new_uri
      URI::Generic.build :host => faux_server[2], :port => faux_server[1]
    end

    protected

    def faux_server
      server = TCPServer.new('0.0.0.0', nil)
      server.addr
    ensure
      server.close
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
specjour-0.7.0 lib/specjour/socket_helper.rb
specjour-0.6.6 lib/specjour/socket_helper.rb
specjour-0.6.5 lib/specjour/socket_helper.rb
specjour-0.6.4 lib/specjour/socket_helper.rb
specjour-0.6.3 lib/specjour/socket_helper.rb
specjour-0.6.2 lib/specjour/socket_helper.rb
specjour-0.6.1 lib/specjour/socket_helper.rb
specjour-0.6.0 lib/specjour/socket_helper.rb