8

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

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

这甚至可能吗?

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

4

3 回答 3

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更完整/更强大的正则表达式。

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

于 2008-09-18T08:12:33.190 回答
1

您可以非常快速地编写一个程序,该程序获取输出rake routes然后解析输出以将 URL 列表放在一起。

通常,我为负载测试所做的是使用WebLOAD之类的工具并编写几种不同类型的用户会话(或用户可以采取的不同路线)的脚本。然后,我创建了一个用户会话组合并在网站上运行它们,以获得接近网站运行方式的准确图片。

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

于 2008-09-17T15:27:35.773 回答
0

查看 Courtnay Gasking 编写的 Spider 集成测试

http://pronetos.googlecode.com/svn/trunk/vendor/plugins/spider_test/doc/classes/Caboose/SpiderIntegrator.html

于 2012-03-28T19:58:27.057 回答