Как стать автором
Обновить

Vim Ruby Debugger

Время на прочтение 3 мин
Количество просмотров 6.2K
До недавнего времени я писал Ruby код в Netbeans. Штука клевая и очень удобная, но я давно заглядывался на Vim, уж больно он мощный текстовый редактор, бобам и не снилось. Пытался несколько раз на него перейти, но как только встречался какой-то затык в коде, закрывал Vim, открывал Netbeans, ставил брейкпоинт и начинал разбираться что не так. В общем, привык я к отладчику.

Помучившись некоторое время, пришла идея написать Ruby дебаггер под Vim. Открыл код rails.vim, NERDTree.vim и начал учиться VimScript'у. Так что спасибо tpope и Marty Grenfell за уроки (хотя наверно они никогда этого не прочтут и не узнают об этом). Плагин можно сейчас лицезреть на гитхабе.

Что умеет плагин


1. Дебажить любые Ruby скрипты, используя ruby-debug-ide гем.
2. Ставить/удалять брейкпоинты, смотреть переменные, путешествовать по коду.
3. Вводить команды вручную. Например, :RdbCommand p Post.all выведет все записи модели Post.

Что потребуется


Для корректной работы плагину надо:
  1. Vim версии >= 7.0, скомпиленный с опциями +signs и +clientserver. Проверить это можно так:


    :echo has("signs") && has("clientserver") && v:version >= 700

    Результат должен быть = 1
  2. Установленный гем ruby-debug-ide
  3. Если вы под Linux'ом, нужен установленный lsof

Установка

  1. Клонируем репо:

    git clone git://github.com/astashov/vim-ruby-debugger.git

  2. Из полученного нам нужна только папка vim, остальное нужно только для разработки. Копируем содержимое vim в ~/.vim/ (или в vimfiles, если вы под Windows).

    В итоге, должно получиться 3 файла:
    • plugin/ruby_debugger.vim — собственно сам плагин
    • doc/ruby_debugger — документация
    • bin/ruby_debugger.rb — промежуточный Ruby скрипт между Vim'ом и ruby-debug-ide гемом. Всё общение между ними происходит через него.

  3. Далее, запускаем Vim и выполяем



    :helptags ~/.vim/doc

    для установки документации по плагину. Почитать её можно по команде

    :help ruby-debugger

Установка завершена!

Использование

  1. Запускаем Vim. Если вы используете gvim, он автоматически запустит Vim сервер, а если vim — надо запускать с опцией servername: vim --servername VIM
  2. Идем, например, в какой-нибудь рельсовый проект.
  3. Запускаем сервер c отладчиком командой

    :Rdebugger

    (по умолчанию он запускает script/server webrick, если надо отладить другой скрипт, можно запустить:

    :Rdebugger foo.rb

  4. Ставим где-нибудь брейкпоинт (по умолчанию командой <Leader>b, чаще всего это \b).
  5. Открываем страницу с брейкпоинтом в браузере. Vim должен автоматически прыгнуть к линии со сработавшим брейкпоинтом.
  6. Дальше смотрим переменные, путешествуем по коду, в общем — развлекаемся! :)

Команды


По умолчанию (их конечно же можно переопределить в вашем .vimrc) задейстованы такие сокращения:
  • <Leader>b — поставить брейкпоинт
  • <Leader>v — открыть/закрыть окно с переменными. Переменные можно открывать/закрывать либо командой 'o' в нормальном режими или левым дабл-кликом
  • <Leader>m — открыть/закрыть окно с брейкпоинтами. Можно прыгнуть на выбранный брейкпоинт команодй 'o' в нормальном режими или левым дабл-кликом, а также удалить брейкпоинт командой 'd' в нормальном режиме
  • <Leader>n — перешагнуть (step over)
  • <Leader>s — войти (step into)
  • <Leader>c — продолжить (continue)

Как переопределить их вы можете почитать в :help ruby-debugger-details

Если вы встретили баг или придумали новую клевую фичу


То я буду дико признателен за репорт в гитхабовском Issues. Можете также просто написать на anton /сбк/ astashov.net, но репорт в Issues будет лучше. :) Плагин ведет лог почти обо всех своих действиях в файл ~/.vim/tmp/ruby_debugger_log, так что вместе с багом желательно приложить содержимое этого файла.

Я проверял работоспособность в Linux'е и Windows. В Linux'e плагин работает лучше, в Windows я так и не понял как запускать процессы в бэкграунде, поэтому мельтешащие окна с сервером и промежуточным ruby скриптом отвлекают. В MacOs не проверял, потому как у меня её нет.

Ну и напоследок скриншот плагина:
Скриншот Vim Ruby Debugger
Теги:
Хабы:
+35
Комментарии 24
Комментарии Комментарии 24

Публикации

Истории

Работа

Ruby on Rails
17 вакансий
Программист Ruby
15 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн