【发布时间】:2010-02-05 16:57:11
【问题描述】:
我正在尝试从控制器获取运行 rails 应用程序的机器的主机名。
考虑到它应该在 Windows 和 linux 上都可以工作,最好的方法是什么?
【问题讨论】:
我正在尝试从控制器获取运行 rails 应用程序的机器的主机名。
考虑到它应该在 Windows 和 linux 上都可以工作,最好的方法是什么?
【问题讨论】:
您所要做的就是查看控制器中的请求对象:
request.host_with_port
或者如果您不想要端口,只需
request.host
【讨论】:
总会有的:
require 'socket'
...
Socket.gethostname
我没有方便的 Windows 盒子来测试它,但文档没有提到它是 *nix 特定的。
注意:对于 Rails 4 和其他 Rails 版本,require 语句不是必需的。如果你在做没有 Rails 的普通 Ruby,它是必需的。
【讨论】:
使用反引号和命令hostname
current_host = `hostname`
这会将命令发送到 shell,并返回主机名。至少适用于:Debian Linux、Windows、Solaris。
【讨论】:
如果您需要从协议到端口的完整域路径,请尝试:
full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port
【讨论】: