我正在维护Ruby on Rails应用程序,我正在寻找一种简单的方法来查找我所在的盒子的主机名或IP地址(因为它是一个VM,新实例可能有不同的主机名或IP地址) .在Ruby on Rails中有一种快速简便的方法吗?
编辑:下面的答案是正确的,但克雷格提供的澄清是有用的(参见答案中提供的链接):
[下面]代码不会建立连接或发送任何数据包(到64.233.187.99,这是谷歌).由于UDP是无状态协议,因此connect()仅进行系统调用,该系统调用根据地址和应绑定的接口(以及IP地址)来确定如何路由数据包.addr()返回一个数组,其中包含套接字的系列(AF_INET),本地端口和本地地址(我们想要的).
在Rails模型中,我希望能够找到主机和端口.例如,如果我在测试环境中它会返回http://localhost:3000/ ,如果我在生产中它将返回类似的东西http://my.application.com/?
在我的production.rb中,我将asset_host设置为CloudFront,如下所示:
config.action_controller.asset_host = 'http://xxxxxxxx.cloudfront.net'
Run Code Online (Sandbox Code Playgroud)
现在我发现在某些情况下(特别是输出JavaScript嵌入到另一个站点)我需要在开发环境中设置asset_host,默认的null不会删除它.理想情况下我想设置:
config.action_controller.asset_host = 'http://localhost:3000'
Run Code Online (Sandbox Code Playgroud)
但这个端口无法保证,我不愿意硬编码.有没有办法将asset_host设置为当前域和端口?
谢谢!
有没有办法在测试中获得在黄瓜测试期间运行rails应用程序的端口?我试过Capybara.server_port,但那是零.
谢谢.