RAILS, CUCUMBER: получение адреса сервера тестирования - PullRequest
0 голосов
/ 21 декабря 2011

Во время теста на огурец мне нужно знать адрес локального сервера тестирования. Это будет что-то вроде "localhost: 47632". Я искал ENV, но его там нет, и я не могу найти другие переменные, которые могут иметь его. Идеи?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

(отвечая на мой собственный вопрос только для того, чтобы форматирование кода было правильным) ... Используя идею Джейделя использовать 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
0 голосов
/ 21 декабря 2011

Я считаю, что порт генерируется динамически при тестовых запусках.Вы можете использовать инструменты уровня ОС, чтобы проверить, какие соединения открыты процессом, и таким образом определить порт.Я делаю это в своей системе Ubuntu нечасто, поэтому я не могу сказать вам, какой инструмент это делает.Netstat может быть?Мне всегда нужно выходить на улицу и гуглить, поэтому рассмотрите это скорее как подсказку, чем полный ответ.

Ах, чтобы быть более понятным ... Я ставлю точку отладки, и когда она ломается, ТОГДА яиспользуйте инструменты уровня ОС, чтобы увидеть, на каком порту работает тестовый сервер в данный момент времени.Как обнаружить это предсказательно?Понятия не имею, извините.

вот что я использую:

netstat -an |grep LISTEN

...