Anton Astashov hat kürzlich ein Plugin für vim veröffentlicht, mit dem man ruby- und Rails-Projekte aus dem Editor heraus debuggen kann. Mit
:Rdebugger
startet man den Mechanismus. Im Falle eines Railsprojektes wird dann ein Mongrel im development-Modus durch den Debugger gestartet. Auf den kann man wie üblich mit dem Webbrowser zugreifen. Hat man Breakpoints gesetzt, so hält der Prozess an der Stelle an und vim zeigt sie im Hauptfenster.
Nun kann man sich die aktiven Variablen ansehen und schrittweise durch den Quelltext gehen:

Installation
Damit die Sache funktioniert, muss der vim mit “1” antworten, wenn man ihn dies fragt:
:echo has("signs") && has("clientserver") && v:version > 700
Weder der eingebaute vim in Leopard noch der port-vim bringen im Moment eine Unterstützung für das Feature clientserver mit, aber die gvim- und MacVim-Varianten, die ich in Ubuntu und OsX ausprobiert habe, funktionierten beide klaglos.
Außerdem wird das ruby-debug-ide gem genötigt.
Zur Plugininstallation klont man das github-repo:
git clone git://github.com/astashov/vim-ruby-debugger.git
und kopiert dann einige Dateien in vims Pluginverzeichnis:
> cd ./vim-ruby-debugger > cp -r vim/* ~/.vim/plugin/
Im Hilfetext des Plugins in vim stehen deutliche mehr Informationen, als auf der Hauptseite des github-Projekts:
:helptags ~/.vim/doc :help ruby-debugger
Entgegen der Voreinstellung habe ich mir die Tastenkürzel auf die Alt-Taste verlegt. In der ~/.vimrc:
map <A-b> :call g:RubyDebugger.toggle_breakpoint()<CR> map <A-v> :call g:RubyDebugger.open_variables()<CR> map <A-m> :call g:RubyDebugger.open_breakpoints()<CR> map <A-s> :call g:RubyDebugger.step()<CR> map <A-n> :call g:RubyDebugger.next()<CR> map <A-c> :call g:RubyDebugger.continue()<CR> map <A-e> :call g:RubyDebugger.exit()<CR> map <A-d> :call g:RubyDebugger.remove_breakpoints()<CR> let g:ruby_debugger_fast_sender = 1
Die Letzte Zeile ist nötig, um die Benutzung eines Socket-Scripts in C zu aktivieren, dass vermutlich etwas schneller ist, als der übliche Weg (siehe Hilfetext).