sinisterchipmunk/rspec-prof

View on GitHub
README.rdoc

Summary

Maintainability
Test Coverage
= rspec-prof {<img src="https://travis-ci.org/sinisterchipmunk/rspec-prof.png?branch=master" alt="Build Status" />}[https://travis-ci.org/sinisterchipmunk/rspec-prof] {<img src="https://coveralls.io/repos/sinisterchipmunk/rspec-prof/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/sinisterchipmunk/rspec-prof?branch=master] {<img src="https://codeclimate.com/github/sinisterchipmunk/rspec-prof.png" />}[https://codeclimate.com/github/sinisterchipmunk/rspec-prof]

Integrates ruby-prof with RSpec, allowing you to easily profile your RSpec
examples.

== Installation

If 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

== Usage

The 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.

== Configuration

You 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 Resuming

It 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.

== Copyright

Copyright (c) 2010 Colin MacKenzie IV. See LICENSE for details.