ddollar / rack-debug

Rack::Debug is middleware that provides a simple interface to ruby-debug. Helps debug apps running in Passenger.

This URL has Read+Write access

ddollar (author)
Thu Nov 05 16:27:31 -0800 2009
commit  0e91222d5fd42940ccda2f790346cc1ff9df0225
tree    b293176d82e1580d4890fe9d12984a6c21bc1a8e
parent  b2a3f613c8eb2fc3dd8ddba96921fa37726e1feb
name age message
file .gitignore Tue May 19 09:34:35 -0700 2009 gemify [ddollar]
file README.rdoc Loading commit data...
file Rakefile Thu Nov 05 16:27:20 -0800 2009 update rakefile to correct typos and to add new... [ddollar]
file VERSION Thu Nov 05 16:27:31 -0800 2009 Version bump to 1.4.1 [ddollar]
directory lib/ Thu Nov 05 16:23:32 -0800 2009 better handling of :socket_path option [ddollar]
file rack-debug.gemspec
README.rdoc

Install

 $ gem install rack-debug

Rails

 # config/environments/development.rb
 config.gem 'rack-debug'
 config.middleware.use 'Rack::Debug'

 # RAILS_ROOT/Rakefile
 require 'rack-debug/tasks'

Middleware

 # add a use line to your builder
 require 'rack/debug'
 Rack::Builder.new do
   use Rack::Debug
   run MyApp.new
 end

 # can optionally specify where to put the sockets
 use Rack::Debug, :socket_path => '/tmp/rack-debug'

 # Rakefile
 require 'rack-debug/tasks'

Add breakpoints to your code

 @user = User.find(params[:id])
 debugger
 render :show

Debugging:

 # run the rake task,
 $ rake debug
 Connected.

 # refresh a page in your browser, your app will break at debugger statements
 (rdb:1) p @user
 #<User id: 1, name: "David Dollar", email: "ddollar@gmail.com", created_at: "...", updated_at: "...">

 # can specify the socket path
 SOCKET_PATH=/tmp/rack-debug rake debug

Thanks to:

  Rack::Bug for a good example of Rack middleware in Rails
  Ben Scofield for making me want to build some Rack middleware