2

新しいRails 3アプリでパフォーマンスの記録/追跡のためにABをいじってみました。アプリは常にログインする必要があるため、ログインするには POST リクエストを実行する必要がありました。次のように資格情報をテキスト ファイルに入れることができましたが、AuthenticityToken が問題を引き起こしています。

#login_data.txt

user_account%5Busername%5D=admin&user_account%5Bpassword%5D=adminhr

#AB command

ab -v4 -n100 -t5 -T 'application/x-www-form-urlencoded' -p login_data.txt http://nhc.lvh.me:3000/

#The log

Started POST "/" for 127.0.0.1 at 2011-02-15 11:13:37 +0545
  Processing by CompaniesController#index as */*
  Parameters: {"user_account"=>{"username"=>"admin", "password"=>"[FILTERED]"}}
Completed   in 1ms

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):


Rendered /Users/millisami/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
Rendered /Users/millisami/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1194.0ms)
Rendered /Users/millisami/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (1291.3ms)

問題は、使用時にその AuthenticityToken を渡すまたは無視する方法abです。動的に生成されるため、どこかに保存できますか、それとも他のより良い解決策はありますか?

4

1 に答える 1

0

できることは、テストと開発以外の環境をセットアップすることです。development.rb 環境のコピーを置いて、benchmark.rb という名前を付けることができます。

また、ベンチマーク環境用の database.yml にエントリを配置します。これについては、開発エントリの内容をコピーできます。

そして、環境がベンチマークの場合、コードで認証トークンの検証をスキップできます。rails s -e ベンチマークを起動し、そのサーバーに対してベンチマークを実行します。

于 2012-09-05T06:44:44.337 に答える