在Rails应用程序中获取URL的完整列表

时间:2020-03-05 18:59:07  来源:igfitidea点击:

如何获得我的rails应用程序可以生成的所有URL的完整列表?

我不希望我从耙子路线中获得路线,而是想获得与应用程序中所有动态生成的页面相对应的actul URL。

这有可能吗?

(背景:之所以这样做,是因为我想要一个完整的URL列表来进行一些负载测试,该测试必须覆盖应用程序的整个范围)

解决方案

回答

我们可以很快找到一个程序,该程序可以获取" rake route"的输出,然后将其解析为URL列表。

通常,对于负载测试,我要做的是使用WebLOAD之类的工具,并为几种不同类型的用户会话(或者用户可以采用的不同路线)编写脚本。然后,我创建了一个用户会话组合,并通过网站运行它们,以使人们对网站的运行方式有一个准确的了解。

通常,我还将在总共4台不同的计算机上执行此操作,这些计算机运行约80个并发用户会话,以实际模拟整个应用程序中将发生的情况。这也确保了我不会花太多时间来优化不经常访问的页面,而是可以专注于关键路径上的整体应用程序性能。

回答

我可以使用以下命令产生有用的输出:

$ 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:'开头的非空格内容