Get hostname from Rails controller

Viewed 45592

I am trying to get the hostname of the machine which a rails application is running on from the controller.

What would be the best way to do this taking into account it should work on both windows and linux?

4 Answers

There's always:

require 'socket'
...
Socket.gethostname

I've got no Windows box handy with which to test this, but the docs make no mention of it being *nix specific.

Note: The require statement is not necessary for Rails 4, and probably other Rails versions as well. It is required if you are doing plain Ruby without Rails.

Use backticks and the command hostname

current_host = `hostname`

This sends the command to the shell, and returns the hostname. Works on at least: Debian Linux, Windows, Solaris.

If you need the full domain path from protocol to port, try:

full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port
Related