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

ackgrepていますperlが、より完全で強力な正規表現を使用します。

-o一致した部分文字列のみを出力するように指示ackし、使用したパターンは、前にスペースがないものを探します'URL:'

于 2008-09-18T08:12:33.190 に答える
1

rake routesの出力を取得し、出力を解析してURLのリストをまとめるプログラムをすばやくハックすることができます。

私が通常、負荷テストのために行ったことは、WebLOADのようなツールを使用して、いくつかの異なるタイプのユーザーセッション(またはユーザーが取ることができる異なるルート)をスクリプト化することです。次に、ユーザーセッションの組み合わせを作成し、それらをWebサイトで実行して、サイトがどのように実行されるかを正確に把握します。

通常、これは、アプリケーションを通じて何が起こるかを現実的にシミュレートするために、約80の同時ユーザーセッションを実行している合計4つの異なるマシンでも実行します。これにより、アクセス頻度の低いページの最適化に過度の時間を費やすことがなくなり、代わりに、クリティカルパスに沿ったアプリケーション全体のパフォーマンスに集中できます。

于 2008-09-17T15:27:35.773 に答える
0

Courtnay Gasking によって書かれた Spider Integration Tests をチェックしてください

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

于 2012-03-28T19:58:27.057 に答える