从 Rails 控制器获取主机名

发布于 2024-08-20 14:03:53 字数 83 浏览 4 评论 0原文

我试图从控制器获取运行 Rails 应用程序的机器的主机名。

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

I am trying 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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

万水千山粽是情ミ 2024-08-27 14:03:53

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

request.host_with_port

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

request.host

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
戒ㄋ 2024-08-27 14:03:53

总是有这样的情况:

require 'socket'
...
Socket.gethostname

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

注意:require 语句对于 Rails 4 来说不是必需的,可能其他 Rails 版本也是如此。如果您在不使用 Rails 的情况下使用普通 Ruby,则这是必需的。

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.

浅黛梨妆こ 2024-08-27 14:03:53

使用反引号和命令 hostname

current_host = `hostname`

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

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.

如果没结果 2024-08-27 14:03:53

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

full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port

If you need the full domain path from protocol to port, try:

full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文