2010-02-05 24 views
34

Sto cercando di ottenere il nome host della macchina su cui è in esecuzione un'applicazione rails dal controller.Ottieni nome host dal controller Rails

Quale sarebbe il modo migliore per farlo tenendo conto che dovrebbe funzionare sia su Windows che su Linux?

risposta

22

C'è sempre:

require 'socket' 
... 
Socket.gethostname 

Non ho di Windows box a portata di mano con cui mettere alla prova questo, ma la documentazione fanno alcuna menzione di esso che è * nix specifica.

6

Utilizzare backticks e il comando hostname

current_host = `hostname` 

Questo invia il comando per la shell, e restituisce il nome host. Funziona almeno su: Debian Linux, Windows, Solaris.

+5

Se avete intenzione di fare questo suggerirei di memorizzare il valore nella cache tramite un inizializzatore e non di fare un fork() per ogni richiesta. –

+0

Funziona anche su Mac OS. – calasyr

77

Tutto quello che dovete fare è guardare l'oggetto di richiesta nel controller:

request.host_with_port 

o se non si desidera che la porta, appena

request.host 
+1

questo è utile se si sta tentando di analizzare gli URL e così via, ma penso che questa particolare domanda riguardi il nome effettivo di quella macchina o sistema operativo. – taelor

+0

questo non ti aiuterà se vuoi ottenere il nome interno dell'host – phoet

Problemi correlati