我正在尝试从控制器获取运行 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