2010-02-05 15 views
34

Próbuję uzyskać nazwę hosta komputera, na którym uruchamiana jest aplikacja szyny z kontrolera.Uzyskaj nazwę hosta od kontrolera Rails

Jaki byłby najlepszy sposób, aby to zrobić, biorąc pod uwagę, że powinien działać zarówno w systemie Windows i Linux?

Odpowiedz

22

Zawsze: brak

require 'socket' 
... 
Socket.gethostname 

Mam Okna poręczne pudełko z którego można przetestować, ale docs nie wspominają go jako * nix specyficzny.

6

Stosować backticks i komenda hostname

current_host = `hostname` 

ta wysyła polecenie do powłoki i zwraca nazwę hosta. Działa na co najmniej: Debian Linux, Windows, Solaris.

+5

Jeśli masz zamiar zrobić to zalecam buforowanie wartości za pomocą inicjalizatora, a nie robienie fork() dla każdego żądania. –

+0

Działa również na Mac OS. – calasyr

77

Wszystko co musisz zrobić, to patrzeć na obiekcie żądania w kontrolerze:

request.host_with_port 

lub jeśli nie chcesz do portu, tylko

request.host 
+1

jest to przydatne, jeśli próbujesz analizować adresy URL i takie, ale myślę, że to konkretne pytanie dotyczy rzeczywistej nazwy tego komputera lub systemu operacyjnego. – taelor

+0

to nie pomoże, jeśli chcesz uzyskać wewnętrzną nazwę hosta – phoet