开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜