【发布时间】:2008-09-17 15:12:15
【问题描述】:
如何获得我的 rails 应用程序可以生成的所有 url 的完整列表?
我不希望我获得的路由从 rake 路由中获取,而是我希望获得与我的应用程序中所有动态生成的页面相对应的实际 URL...
这可能吗?
(背景:我这样做是因为我想要一个完整的 URL 列表,用于我想做的一些负载测试,它必须涵盖应用程序的整个广度)
【问题讨论】:
标签: ruby-on-rails url listings
如何获得我的 rails 应用程序可以生成的所有 url 的完整列表?
我不希望我获得的路由从 rake 路由中获取,而是我希望获得与我的应用程序中所有动态生成的页面相对应的实际 URL...
这可能吗?
(背景:我这样做是因为我想要一个完整的 URL 列表,用于我想做的一些负载测试,它必须涵盖应用程序的整个广度)
【问题讨论】:
标签: ruby-on-rails url listings
我能够使用以下命令产生有用的输出:
$ 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 集成测试
【讨论】: