获取rails应用程序中URLS的完整列表

时间:2008-09-17 15:12:16

标签: ruby-on-rails url listings

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

我不希望我获得的路由形成rake路由,而是希望获得与我的应用程序中所有动态生成的页面相对应的actul URL ...

这甚至可能吗?

(背景:我这样做是因为我想要一个完整的URL列表,用于我想做的一些负载测试,它必须涵盖整个应用程序的广度)

3 个答案:

答案 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

ackgrep类似,但使用perl regexps,它们更完整/更强大。

-o告诉ack仅输出匹配的子字符串,我使用的模式查找前面带有'URL:'的任何非空格

答案 1 :(得分:1)

你可以很快地破解一个抓取rake routes输出的程序,然后解析输出以汇总一个URL列表。

我通常为负载测试所做的是使用WebLOAD之类的工具,并编写几种不同类型的用户会话(或用户可以采用的不同路径)。然后,我创建了一系列用户会话,并通过网站运行它们,以获得有关网站运行方式的准确图片。

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

答案 2 :(得分:0)