46

我正在尝试从控制器获取运行 rails 应用程序的机器的主机名。

考虑到它应该在 Windows 和 linux 上都可以工作,最好的方法是什么?

4

4 回答 4

95

您所要做的就是查看控制器中的请求对象:

request.host_with_port

或者如果您不想要端口,只需

request.host
于 2010-06-22T23:03:53.890 回答
30

总有:

require 'socket'
...
Socket.gethostname

我没有方便的 Windows 盒子来测试它,但文档没有提到它是 *nix 特定的。

注意:对于 Rails 4 和其他 Rails 版本,require 语句不是必需的。如果你正在做没有 Rails 的普通 Ruby,它是必需的。

于 2010-02-05T17:26:53.620 回答
8

使用反引号和命令hostname

current_host = `hostname`

这会将命令发送到 shell,并返回主机名。至少适用于:Debian Linux、Windows、Solaris。

于 2010-02-06T03:46:16.540 回答
1

如果您需要从协议到端口的完整域路径,请尝试:

full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port
于 2018-10-26T16:12:53.397 回答