我正在维护Ruby on Rails应用程序,我正在寻找一种简单的方法来查找我所在的盒子的主机名或IP地址(因为它是一个VM,新实例可能有不同的主机名或IP地址) .在Ruby on Rails中有一种快速简便的方法吗?
编辑:下面的答案是正确的,但克雷格提供的澄清是有用的(参见答案中提供的链接):
[下面]代码不会建立连接或发送任何数据包(到64.233.187.99,这是谷歌).由于UDP是无状态协议,因此connect()仅进行系统调用,该系统调用根据地址和应绑定的接口(以及IP地址)来确定如何路由数据包.addr()返回一个数组,其中包含套接字的系列(AF_INET),本地端口和本地地址(我们想要的).
因此,我希望我的Rails应用程序实例能够在我正在使用的"我正在进行"的事情上进行注册,并且我希望它能够提及它正在运行的本地端口.我似乎无法找到如何做到 - 实际上只是发现它的IP是棘手的,需要一点点黑客.
但没问题,我有IP - 但我怎样才能找到我的mongrel/thin/webrick服务器运行的端口?
要超级明确,如果我使用脚本/服务器-p 3001启动rails应用程序,我该怎么做才能在应用程序中提取3001.
为了能够看到用户是否在Facebook上共享了我的页面,我希望能够创建这种URL:
http://graph.facebook.com/?id=http://stylehatch.co/some_unique_user_token
Run Code Online (Sandbox Code Playgroud)
凡http://stylehatch.co将需要我的基本URL.我正在考虑在User模型中创建一个将构建并返回该URL的方法,但我无法从我的模型中访问root_url.
如何从模型中获取应用程序的基本URL?
如果我的网址看起来像这样:
http://myapp.com/users/new
http://myapp.com/users/2/show
Run Code Online (Sandbox Code Playgroud)
如何从我的模型中获取" http://myapp.com "?我已经添加了:
include Rails.application.routes.url_helpers
Run Code Online (Sandbox Code Playgroud)
在我的模型中,但似乎root_url是零.有什么想法吗?这是一个Model方法是正确的,还是应该将它放在帮助器中?
谢谢