获取 Rails 应用程序中 URL 的完整列表
-
01-07-2019 - |
题
如何获取我的 Rails 应用程序可以生成的所有 URL 的完整列表?
我不希望从 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 列表放在一起。
我通常为负载测试所做的是使用类似的工具 网页加载 并编写几种不同类型的用户会话(或用户可以采取的不同路线)的脚本。然后,我创建混合的用户会话并在网站上运行它们,以准确了解网站的运行方式。
通常,我还会在总共 4 台不同的计算机上执行此操作,运行大约 80 个并发用户会话,以真实地模拟应用程序中将发生的情况。这也确保我不会花费太多时间优化不常访问的页面,而是可以专注于关键路径上的整体应用程序性能。
查看 Courtnay Gasking 编写的 Spider 集成测试
不隶属于 StackOverflow