Railsアプリケーションが生成できるすべてのURLの完全なリストを取得するにはどうすればよいですか?
取得したルートがrakeルートから取得するのではなく、アプリケーションで動的に生成されたすべてのページに対応する実際のURLを取得したい...
これも可能ですか?
(背景:これを行っているのは、実行したい負荷テストのURLの完全なリストが必要なためです。これは、アプリケーションの全範囲をカバーする必要があります)
Railsアプリケーションが生成できるすべてのURLの完全なリストを取得するにはどうすればよいですか?
取得したルートがrakeルートから取得するのではなく、アプリケーションで動的に生成されたすべてのページに対応する実際のURLを取得したい...
これも可能ですか?
(背景:これを行っているのは、実行したい負荷テストのURLの完全なリストが必要なためです。これは、アプリケーションの全範囲をカバーする必要があります)
次のコマンドで有用な出力を生成することができました。
$ 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のようなツールを使用して、いくつかの異なるタイプのユーザーセッション(またはユーザーが取ることができる異なるルート)をスクリプト化することです。次に、ユーザーセッションの組み合わせを作成し、それらをWebサイトで実行して、サイトがどのように実行されるかを正確に把握します。
通常、これは、アプリケーションを通じて何が起こるかを現実的にシミュレートするために、約80の同時ユーザーセッションを実行している合計4つの異なるマシンでも実行します。これにより、アクセス頻度の低いページの最適化に過度の時間を費やすことがなくなり、代わりに、クリティカルパスに沿ったアプリケーション全体のパフォーマンスに集中できます。
Courtnay Gasking によって書かれた Spider Integration Tests をチェックしてください