ruby-profを使うと、Railsアプリケーションも簡単にプロファイリングすることが出来ます。
手順は簡単。
まず、Gemfileに追加します。
gem 'ruby-prof'
gem 'rack-contrib'
bundle installしたら、config.ruに以下の記述をします。
# 特定environmentのみで有効にしたい場合、
# if ENV['RACK_ENV'] == 'development' などすると良いです
require 'ruby-prof'
Rack::RubyProf = RubyProf #エラー対策
require 'rack/contrib/profiler'
use Rack::Profiler, :printer => :graph_html
require ::File.expand_path('../config/environment', __FILE__)
run MyApp::Application
これでサーバを再起動したら、
http://localhost:3000/hoge?profile=process_time
のように、URLに?profile=process_time
をつければ、HTMLでプロファイリング結果が表示されます。
大変便利ですね。
エラー対処
バージョン依存のようなのですが、RubyProf(本物)とRack::RubyProf(なんか空のモジュール)ができてしまい、Rack::ProfilerはデフォルトでRack::RubyProfを参照してしまうので、そこでUninitialied Constantエラーが出ていました。
そのためここでは、Rack::RubyProf = RubyProf
という荒技で、対処しています。