如何获得我的 rails 应用程序可以生成的所有 url 的完整列表?
我不希望我得到的路由形成 rake 路由,而是我想获得与我的应用程序中所有动态生成的页面相对应的实际 URL...
这甚至可能吗?
(背景:我这样做是因为我想要一个完整的 URL 列表,用于我想做的一些负载测试,它必须涵盖应用程序的整个广度)
如何获得我的 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 列表放在一起。
通常,我为负载测试所做的是使用WebLOAD之类的工具并编写几种不同类型的用户会话(或用户可以采取的不同路线)的脚本。然后,我创建了一个用户会话组合并在网站上运行它们,以获得接近网站运行方式的准确图片。
通常,我还将在总共 4 台不同的机器上运行大约 80 个并发用户会话,以真实地模拟通过应用程序将发生的事情。这也确保我不会花太多时间优化不常访问的页面,而是可以专注于关键路径上的整体应用程序性能。
查看 Courtnay Gasking 编写的 Spider 集成测试