Twitter GitHub

BetterErrors и RubyMine в Mac OS X

Есть такой великолепный и очень полезный gem — BetterErrors. Чем он так полезен и замечетален вы можете посмотреть в скринкасте RailsCasts.com, заодно и про RailsPanel узнаете. В этом же скринкасте говориться и об одной из самых полезных фич этого gem’а — открытие файла и строчки, в которой произошла ошибка, прямо из браузера — кликом мышки. Но из коробки, к сожалению, эту фичу поддерживает только TextMate и с небольшим допилом Sublime Text 2.

До недавнего времени в RubyMine эту проблему можно было частично решить плагином Remote Call, а частично, потому что при клике по ссылке нужный файл открывался, но вот фокус в приложение RubyMine не переключался, нужно было вручную возвращаться в IDE, что не очень-то и удобно.

Однако буквально на днях вышел RubyMine ICHII (EAP), в котором была заявлена поддержка gem’а RubyMine Heaven, и благодаря этому теперь можно полноценно использовать и возможности BetterErrors.

Итак, чтобы включить возможность перехода из браузера в файл с ошибкой в RubyMine нужно проделать следующую нехитрую последовательность действий:

  1. установить RubyMine ICHII (EAP и выше);
  2. установить в ваше приложение BetterErrors (смотрите скринкаст и GitHub);
  3. в настройках 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: ToolsCreate 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>

Комментарии (4)

  • Денис Ушаков says

    Вообще говоря, должно работать без пунктов 2-6. Достаточно просто поставить EAP и указать протокол

    • Leonid Svyatov says

      Хмм… в Release notes я этого не увидел, увидел только поддержку RubyMine Heaven и воспользовался их инструкцией. Было бы здорово как-то понятнее отразить этот момент в Release notes, а то столько шаманства зазря :(

      • Денис Ушаков says

        Прошу прощения, Release Notes писал практически по дороге на самолет. Постараюсь при первой возможности сделать pull request в rubymine_heaven с правильной инструкцией.

        • Leonid Svyatov says

          Да пустяки, со всеми бывает :) Спасибо за отличную IDE! Обновил свой пост.