如何获得我的rails应用程序可以生成的所有URL的完整列表?
我不希望我获得的路由形成rake路由,而是希望获得与我的应用程序中所有动态生成的页面相对应的actul URL ...
这甚至可能吗?
(背景:我这样做是因为我想要一个完整的URL列表,用于我想做的一些负载测试,它必须涵盖整个应用程序的广度)
答案 0 :(得分:10)
我能够使用以下命令生成有用的输出:
$ 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
regexps,它们更完整/更强大。
-o
告诉ack
仅输出匹配的子字符串,我使用的模式查找前面带有'URL:'
的任何非空格
答案 1 :(得分:1)
你可以很快地破解一个抓取rake routes
输出的程序,然后解析输出以汇总一个URL列表。
我通常为负载测试所做的是使用WebLOAD之类的工具,并编写几种不同类型的用户会话(或用户可以采用的不同路径)。然后,我创建了一系列用户会话,并通过网站运行它们,以获得有关网站运行方式的准确图片。
通常,我还会在运行大约80个并发用户会话的4台不同机器上执行此操作,以逼真地模拟应用程序中将发生的情况。这也确保了我不会花费太多时间来优化不常访问的页面,而是可以专注于关键路径上的整体应用程序性能。
答案 2 :(得分:0)
查看Courtnay Gasking撰写的Spider Integration Tests