<img src=“https://travis-ci.org/sinisterchipmunk/rspec-prof.png?branch=master” alt=“Build Status” /> <img src=“https://coveralls.io/repos/sinisterchipmunk/rspec-prof/badge.png?branch=master” alt=“Coverage Status” /> <img src=“https://codeclimate.com/github/sinisterchipmunk/rspec-prof.png” />¶ ↑
rspec-profIntegrates ruby-prof with RSpec, allowing you to easily profile your RSpec examples.
¶ ↑
InstallationIf you need to use rspec-prof in Rails 2.x or RSpec 1.x, use version ‘0.0.3`.
Gemfile:
group :test do gem 'rspec-prof' end
¶ ↑
UsageThe easiest way to use rspec-prof is to export the ‘RSPEC_PROFILE` environment variable:
$ rake spec RSPEC_PROFILE=each
This will cause every spec to be profiled individually. The output will be placed in ‘./profiles` by default.
To execute all specs as parts of a single profile, export ‘RSPEC_PROFILE=all` instead.
¶ ↑
ConfigurationYou can set some configuration options for ‘rspec-prof`, as long as you do so before `RSpec` begins running specs. Thus, the best place for this configuration is in `spec/support/rspec-prof.rb`.
Valid configuration options and their default values are:
RSpecProf.printer_class = RubyProf::GraphHtmlPrinter # The printer to be used when writing profiles RSpecProf::FilenameHelpers.file_extension = "html" # The file extension for profiles written to disk RSpecProf::FilenameHelpers.output_dir = "profiles" # The destination directory into which profiles are written
¶ ↑
Pausing and ResumingIt is perfectly OK to do this:
require 'spec_helper' describe "smth" do before do # let's not profile the test set-up RubyProf.pause if RubyProf.running? sleep 30 # doing something expensive... # don't forget to resume so specs can be measured! RubyProf.resume if RubyProf.running? end end
¶ ↑
Note on Patches/Pull Requests-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Send me a pull request. Bonus points for topic branches.
¶ ↑
CopyrightCopyright © 2010 Colin MacKenzie IV. See LICENSE for details.