SORU
3 EYLÜL 2008, ÇARŞAMBA


Raylar üzerinde Ruby makine adı ya da IP almak

Ben bu sürecin sürdürülmesi bir Ruby on Rails uygulaması ve am seyir için kolay bir yol bulmak için makine adı ya da IP adresi kutusuna gidiyorum (bu yana bir VM ve yeni örnekleri olabilir farklı hostname veya IP adresleri). Hızlı ve kolay bir şekilde Raylar üzerinde Ruby bunu yapmak için var mı?

Edit: cevap aşağıda doğru ancak Craig sağlanan açıklama yararlı (ayrıca cevap içinde bağlantı sağlanır):

[Aşağıda] kod yapmaz bağlantı veya herhangi bir paket göndermek için Google hangi 64.233.187.99). UDP beri vatansız bir protokol connect() sadece bir sistem çağrısı yapar paketleri yönlendirmek için nasıl dolduracağını adresi dayalı ve ne arayüz (ve bu nedenle IP adresi) bağlamak gerekir. () bir adres verir dizi aile (BUNLAR) içeren, Yerel bağlantı noktası, yerel Adres (hangi bizim istediğimiz şeydir) yuva.

CEVAP
8 EKİM 2009, PERŞEMBE


Hostname

Sadece Ruby hostname almak için basit bir yoludur:

require 'socket'
hostname = Socket.gethostname

Bu yüzden, ana orijinal problem için çalışmaz yani ya gethostname uname sistem çağrısı kullanır, çünkü kendi adını bilmeye dayanır.

İşlevsel olarak bu hostname cevap aynıdır, harici bir program yürütmesini olmadan. Hostname olabilir ya da tam, makine yapılandırmasına bağlı olabilir.


IP Adresi

Ruby beri 1.9, sen de Yuva kütüphane yerel adreslerinin listesini almak için kullanabilirsiniz. ip_address_list AddrInfo nesneleri içeren bir dizi döndürür. Nasıl seçim olacaktır bağlıdır ne yapmak istediğini ve ne kadar çok arayüz var, ama burada bir örnek sadece seçer ilk olmayan geri döngü IPV4 IP adresi olarak bir dize:

require 'socket'
ip_address = Socket.ip_address_list.find { |ai| ai.ipv4? && !ai.ipv4_loopback? }.ip_address

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • NPR

    NPR

    22 NİSAN 2006
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007