从Rails控制器获取主机名

Rai*_*Son 38 ruby-on-rails hostname

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

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

Wil*_*elm 85

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

request.host_with_port
Run Code Online (Sandbox Code Playgroud)

或者,如果你不想要这个端口,那就是

request.host
Run Code Online (Sandbox Code Playgroud)


Way*_*rad 29

总是:

require 'socket'
...
Socket.gethostname
Run Code Online (Sandbox Code Playgroud)

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

注意:Rails 4不需要require语句,也可能是其他Rails版本.如果您在没有Rails的情况下使用纯Ruby,则需要它.


bte*_*les 6

使用反引号和命令 hostname

current_host = `hostname`
Run Code Online (Sandbox Code Playgroud)

这会将命令发送到shell,并返回主机名.至少可以使用:Debian Linux,Windows,Solaris.

  • 如果您要这样做,我建议通过初始化程序缓存该值,而不是为每个请求执行fork(). (6认同)