【问题标题】:Getting a full list of the URLS in a rails application在 Rails 应用程序中获取 URL 的完整列表
【发布时间】:2008-09-17 15:12:15
【问题描述】:

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

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

这可能吗?

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

【问题讨论】:

    标签: ruby-on-rails url listings


    【解决方案1】:

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

    $ 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:' 的任何非空格

    【讨论】:

    • 这是一个很棒的解决方案。它正是我需要的。谢谢。不过,没有一种更简单的方法可以简单地抓取网站,这有点令人惊讶。
    【解决方案2】:

    您可以快速编写一个程序,该程序获取rake routes 的输出,然后解析输出以组合一个 URL 列表。

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

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

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 2015-08-22
      • 2022-08-05
      • 2022-09-23
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多