Получение полного списка URL-адресов в приложении Rails
-
01-07-2019 - |
Вопрос
Как мне получить полный список всех URL-адресов, которые могло сгенерировать мое приложение Rails?
Я не хочу, чтобы маршруты, которые я получаю, формировали rake-маршруты, вместо этого я хочу получить фактические URL-адреса, соответствующие всем динамически генерируемым страницам в моем приложении...
Возможно ли это вообще?
(Фон:Я делаю это, потому что мне нужен полный список URL-адресов для некоторого нагрузочного тестирования, которое я хочу провести, которое должно охватывать всю ширину приложения)
Решение
Мне удалось получить полезный вывод с помощью следующей команды:
$ wget --spider -r -nv -nd -np http://localhost:3209/ 2>&1 | ack -o '(?<=URL:)\S+'
http://localhost:3209/
http://localhost:3209/robots.txt
http://localhost:3209/agenda/2008/08
http://localhost:3209/agenda/2008/10
http://localhost:3209/agenda/2008/09/01
http://localhost:3209/agenda/2008/09/02
http://localhost:3209/agenda/2008/09/03
^C
Краткий справочник wget
аргументы:
# --spider don't download anything.
# -r, --recursive specify recursive download.
# -nv, --no-verbose turn off verboseness, without being quiet.
# -nd, --no-directories don't create directories.
# -np, --no-parent don't ascend to the parent directory.
О ack
ack
как grep
но используйте perl
регулярные выражения, которые являются более полными/мощными.
-o
рассказывает ack
для вывода только совпадающей подстроки, а шаблон, который я использовал, ищет все, что не является пробелом, которому предшествует 'URL:'
Другие советы
Вы можете довольно быстро собрать программу, которая получает выходные данные rake routes
а затем анализирует выходные данные, чтобы составить список URL-адресов.
Обычно для нагрузочного тестирования я использую такой инструмент, как ВебЗАГРУЗКА и создайте сценарии для нескольких различных типов пользовательских сеансов (или разных маршрутов, которые могут выбрать пользователи).Затем я создаю набор пользовательских сеансов и запускаю их через веб-сайт, чтобы получить примерно точную картину того, как сайт может работать.
Обычно я также делаю это на четырех разных машинах, на которых одновременно выполняется около 80 пользовательских сеансов, чтобы реалистично смоделировать то, что будет происходить в приложении.Это также позволяет мне не тратить слишком много времени на оптимизацию редко посещаемых страниц и вместо этого сосредоточиться на общей производительности приложения на критических путях.
Ознакомьтесь с интеграционными тестами Spider, написанными Кортни Гаскинг