В ноябре мы анонсировали обновленные IntelliJ IDEA, CLion, PyCharm и DataGrip, а эта статья — для Ruby/Rails-разработчиков. Мы выпустили RubyMine 2016.3, заключительное обновление нашей IDE для Ruby и Rails в этом году! Обновление доступно для скачивания и бесплатного 30-дневного ознакомления на нашем сайте.
Теперь о том, что нового вы обнаружите в этой версии.
Присоединение отладчика к ранее запущенным процессам
Приходилось ли вам перезапускать работающий сервер и воспроизводить проблему заново только потому, что он был запущен без гемов для отладки? Если да, то вы будете рады узнать, что RubyMine теперь можно присоединить к уже работающим Ruby/Rails-процессам. IDE сама определит версию Ruby и гемсет, использованные для запуска скрипта, установит все необходимые гемы, подключится к процессу, будь он запущен из IDE, терминала или пайплайна, и откроет доступ ко всем возможностям отладчика.
Подробнее о присоединении отладчика к локальным процессам можно почитать на английском в блоге RubyMine. Также вы можете проголосовать за добавление возможности присоединения к удаленным процессам в нашем трекере.
Развитая поддержка Puppet
“Развитая” по той причине, что раньше уже существовала, но теперь стала гораздо лучше. Рассмотрим по пунктам:
Улучшенное автодополнение кода
- Мы добавили live templates и автодополнение для всех основных синтаксических структур: case, class, define, function, if, node и unless.
- Также добавлено автодополнение типов данных для типизированных параметров классов, функций и ресурсов.
- RubyMine теперь поддерживает функции, написанные на языке Puppet. Они тоже доступны в автодополнении.
Улучшенная навигация и рефакторинг
- Go to Declaration, Find Usages и Rename refactoring теперь работают точнее благодаря более правильному определению контекста.
- Мы сделали так, чтобы переименование работало “на лету”, без дополнительных диалогов, как в Java.
На тему Puppet тоже написан отдельный пост.
Ускоренная синхронизация с remote SDK
Если вы пользуетесь нашей IDE, то знаете, что раньше синхронизация гемов с копиями на удаленном сервере требовала, мягко говоря, значительного времени и терпения. Но мы исправились. Интеграция с rsync позволила увеличить скорость загрузки гемов в десятки раз.
Полноценная поддержка Minitest::Spec
Теперь RubyMine выбирает нужный фреймворк для запуска Spec-тестов и позволяет запускать тесты из папки со спецификациями.
Обратите внимание: чтобы все заработало корректно, необходимо вызвать 'minitest/reporters' и включить RubyMineReporter в файле спецификаций.
Пользовательский интерфейс
Обновленный интерфейс настройки Ruby SDK и гемов
Многие Ruby-разработчики используют гемсеты для управления набором гемов. Сначала мы поддержали RVM-гемсеты, а год назад — и Rbenv гемсеты, и наш UI не справился с этой нагрузкой. В этой версии RubyMine мы полностью переделали этот интерфейс и сделали его более удобным и понятным. На эту тему тоже написан отдельный пост в нашем блоге.
Мастер начальной настройки
Помимо нового интерфейса гемов, мы создали диалоговое окно начальной настройки. Теперь в нем можно выбрать цветовую схему IDE и схему сочетаний клавиш, отключить ненужные плагины и сразу скачать новые, например IdeaVIM.
Обновленный дизайн иконок
Иконки были переделаны в стиле “flat-дизайн”, благодаря чему файлы и папки в Project Tool Window отображаются более четко.
Помимо обновлений, относящихся к Ruby/Rails, мы унаследовали и ряд платформенных улучшений от нашего флагмана, Intellij IDEA. Перечислим их кратко (а подробнее см. здесь же, на Хабре, в статье про IntelliJ IDEA 2016.3):
JavaScript
Flow
Теперь, если указать Flow в качестве версии JavaScript, а также указать путь к дистрибутиву Flow, заработают соответствующие инспекции.
ECMAScript 6
- Теперь RubyMine автоматически конвертирует переменные объявленные var в const/let в зависимости от семантики их использования.
- Для всех вызовов require IDE предложит автозамену на import.
- Для всех классов, объявленных с помощью функций и цепочек prototype, IDE предложит автозамену на полноценные классы.
TypeScript
Исправлена проблема переименования наследуемых методов.
Система управления версиями
В VCS действительно симпатичные изменения. Надеемся, вам они понравятся.
Переработан лог Git и Mercurial: поиск стал быстрее, а интерфейс проще. Разрешение конфликтов теперь происходит более эффективно, некоторые несложные конфликты разрешаются автоматически. Кроме того, в IDE стало легче управлять локальными и удаленными изменениями. Подробнее можно почитать как и в посте про IntelliJ IDEA, на который ссылка дана выше, так и на нашем сайте.
Базы данных
К этим изменениям относятся более удобное редактирование данных с возможностью массовых изменений, интеллектуальные подсказки и улучшенная интеграция с утилитами и драйверами. Если вы пользуетесь инструментами баз данных в RubyMine, то прочитайте недавний пост DataGrip на Хабре. Упомянутые в нем улучшения доступны в новой версии и нашей IDE.
И еще кое-что
Среди других улучшений — отображение классов Mailer в соответствии с архитектурой MVC в окне Rails Project Tool Window; переименование файлов без поиска вхождений; поддержка React Native.
Узнать еще больше подробностей и загрузить RubyMine для бесплатного ознакомления в течение 30 дней можно на странице What’s New.
Спасибо за внимание! Будем рады услышать ваши мнения в комментариях и постараемся поддержать обсуждение.
Комментарии (10)
Strollager
08.12.2016 12:10Здорово! А будет ли возможность присоединения отладчика к процессам passenger(у него не один процесс)?
artysark
08.12.2016 13:57IDE покажет все запущенные рубийные процессы, соответственно, все процессы passenger будут видны, надо только знать, к какому именно присоединиться. Ответил на ваш вопрос? Или не так понял?
Strollager
08.12.2016 14:15+1Проблема как раз в том, что нужно знать к какому именно процессу нужно присоединиться. Например присоединяешься к одному процессу, вроде законектился, но дебаггер не реагирует никак.
Если запускать сервер через rails s, то конечно такой проблемы нет. Но бывают сложные мультисайтовые приложения, в которых нужно эмулировать адреса сайтов через hosts; такое уже через rails s не запустишь; вот хотелось бы понять, как можно это отдебажить )
P.S. пробовал законектиться ко всем процессам passenger: к некоторым не получилось подключиться вовсе, а к тем что получилось, не реагируют на точки останова.
tonissimo
08.12.2016 14:35Поправьте уже стиль шрифта oblique на italic, пожалуйста, глаз режет!
artysark
08.12.2016 15:39Уточните, пожалуйста, вашу просьбу.
tonissimo
08.12.2016 15:56+1В редакторе, там, где синтаксис выделяется наклонным стилем (например, комментарии, или как «find» в Array.find у вас на скриншоте), но используется не родной стиль шрифта Italic, а просто наклоненный Regular (хотя в настройках по-моему он указан именно как italic).
Я понимаю, это не особо важная фигня на самом деле, но с Italic-ом намного читабельнее, не так скачет код.artysark
08.12.2016 17:27Ага, спасибо. Вы не могли бы предоставить информацию с About RubyMine (можно скриншот), подсказать вашу операционную систему, а также название используемого шрифта? Нашли похожее issue, можно туда все отправить.
terzeman_andrew
Очень интересная статья, спасибо!