Ruby on rails RAILS,CUCUMBER:获取测试服务器地址

Ruby on rails RAILS,CUCUMBER:获取测试服务器地址,ruby-on-rails,cucumber,Ruby On Rails,Cucumber,在运行cucumber测试时,我需要知道本地测试服务器地址。它将类似于localhost:47632。我搜索了ENV,但它不在那里,而且我似乎找不到任何其他可能有它的变量。想法?我相信端口是在测试运行时动态生成的。您可以使用操作系统级工具检查进程打开的连接,并以这种方式收集端口。我很少在我的ubuntu系统上这样做,所以我不能马上告诉你是什么工具做的。也许是Netstat?我总是要去谷歌,所以考虑这更多的暗示,而不是一个完整的答案。< /P> 啊,更清楚地说……我在其中设置了一个调试断点,当它中

在运行cucumber测试时,我需要知道本地测试服务器地址。它将类似于localhost:47632。我搜索了ENV,但它不在那里,而且我似乎找不到任何其他可能有它的变量。想法?

我相信端口是在测试运行时动态生成的。您可以使用操作系统级工具检查进程打开的连接,并以这种方式收集端口。我很少在我的ubuntu系统上这样做,所以我不能马上告诉你是什么工具做的。也许是Netstat?我总是要去谷歌,所以考虑这更多的暗示,而不是一个完整的答案。< /P> 啊,更清楚地说……我在其中设置了一个调试断点,当它中断时,我使用操作系统级工具查看测试服务器当时运行在哪个端口上。如何预见性地发现它?不知道,对不起

以下是我使用的:


netstat-an | grep听着

回答我自己的问题,这样代码格式就正确了。。。 使用jaydel使用netstat的想法,下面是代码。我从netstat中提取具有当前pid的行。这可能不是最优雅的方式,但它确实有效

value = %x( netstat -l -p --tcp )
pid = $$.to_s
local_port = ""
value.split( "\n" ).each do |i|
    if i.include?( pid )
        m = i.match( /\*:(\d+)/ )
        local_port = m[1].to_s
    end
end

使用jaydel的想法,下面是代码。我从netstat中提取具有当前pid的行。这可能不是最优雅的方法,但它的工作原理是value=%x netstat-l-p-tcp pid=$$。to_s local_port=value.split\n。每个do | i | if i.include?pid m=i.match/*:\d+/local\u port=m[1]。要在MacOS上结束,netstat命令必须是netstat-l-p tcp,而不包含tcp前面的-in。