Есть такой великолепный и очень полезный gem — BetterErrors. Чем он так полезен и замечетален вы можете посмотреть в скринкасте RailsCasts.com, заодно и про RailsPanel узнаете. В этом же скринкасте говориться и об одной из самых полезных фич этого gem’а — открытие файла и строчки, в которой произошла ошибка, прямо из браузера — кликом мышки. Но из коробки, к сожалению, эту фичу поддерживает только TextMate и с небольшим допилом Sublime Text 2.
До недавнего времени в RubyMine эту проблему можно было частично решить плагином Remote Call, а частично, потому что при клике по ссылке нужный файл открывался, но вот фокус в приложение RubyMine не переключался, нужно было вручную возвращаться в IDE, что не очень-то и удобно.
Однако буквально на днях вышел RubyMine ICHII (EAP), в котором была заявлена поддержка gem’а RubyMine Heaven, и благодаря этому теперь можно полноценно использовать и возможности BetterErrors.
Итак, чтобы включить возможность перехода из браузера в файл с ошибкой в RubyMine нужно проделать следующую нехитрую последовательность действий:
- установить RubyMine ICHII (EAP и выше);
- установить в ваше приложение BetterErrors (смотрите скринкаст и GitHub);
- в настройках BetterErrors прописать:
BetterErrors.editor = 'x-mine://open?file=%{file}&line=%{line}'
В частности в моем Rails проекте у меня это прописано так:
# config/environments/development.rb
config.after_initialize do
if defined? BetterErrors
BetterErrors.editor = 'x-mine://open?file=%{file}&line=%{line}'
end
end
Вот и вся настройка. При первом клике по ссылке на странице с ошибкой браузер (и Chrome и Firefox) спросит примерно следующее:
Ставим галочку, жмем «Launch Application», и наслаждаемся дополнительным комфортом при отладке. Удачной вам разработки! ;)
Update от 29.03.2013
Из поста удалены следущие шаги, которые оказывается были совершенно не к чему, просто я не совсем корректно интерпретировал release notes к RubyMine. Спасибо Денису Ушакову, что прояснил для меня этот момент в комметариях!
Еще раз: шаги указанные ниже делать НЕ нужно. Оставляю их тут просто для истории.
- установить CLI Launcher RubyMine:
Tools
→Create Command-line Launcher...
- создать обработчик протокола в AppleScript Editor:
- запустить AppleScript Editor;
- скопипастить следующий код:
on open location this_url do shell script ("mine_handler '" & this_url & "'") end open location
- сохранить все это как Application (куда и имя — не особо важно, можно в Applications как
RubyMineHandler.app
);
- открыть
Package Content
только что сохраненного Application: клик правой кнопкой по приложению в Finder’е, затем выбратьShow Package Content
; - в открывшейся папке открыть файл
Info.plist
любым редактором; - добавить в конец корневого
dict
:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>RubyMine Handler</string> <key>CFBundleURLSchemes</key> <array> <string>x-mine</string> </array> </dict> </array>
Вообще говоря, должно работать без пунктов 2-6. Достаточно просто поставить EAP и указать протокол
Хмм… в Release notes я этого не увидел, увидел только поддержку RubyMine Heaven и воспользовался их инструкцией. Было бы здорово как-то понятнее отразить этот момент в Release notes, а то столько шаманства зазря :(
Прошу прощения, Release Notes писал практически по дороге на самолет. Постараюсь при первой возможности сделать pull request в rubymine_heaven с правильной инструкцией.
Да пустяки, со всеми бывает :) Спасибо за отличную IDE! Обновил свой пост.