Get hostname from Rails controller
I am t开发者_如何学运维rying 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?
All you have to do is look at the request object in your controller:
request.host_with_port
or if you don't want the port, just
request.host
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
精彩评论