Компания
158,88
рейтинг
7 декабря 2016 в 02:19

Разработка → RubyMine 2016.3: Отладка в режиме attach, обновленная поддержка Puppet, синхронизация SDK через rsync

Привет, хабравчане!

В ноябре мы анонсировали обновленные 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.

Спасибо за внимание! Будем рады услышать ваши мнения в комментариях и постараемся поддержать обсуждение.
Автор: @artysark
JetBrains
рейтинг 158,88

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

  • 0
    Очень интересная статья, спасибо!
  • 0
    Здорово! А будет ли возможность присоединения отладчика к процессам passenger(у него не один процесс)?
    • 0
      IDE покажет все запущенные рубийные процессы, соответственно, все процессы passenger будут видны, надо только знать, к какому именно присоединиться. Ответил на ваш вопрос? Или не так понял?
      • +1
        Проблема как раз в том, что нужно знать к какому именно процессу нужно присоединиться. Например присоединяешься к одному процессу, вроде законектился, но дебаггер не реагирует никак.

        Если запускать сервер через rails s, то конечно такой проблемы нет. Но бывают сложные мультисайтовые приложения, в которых нужно эмулировать адреса сайтов через hosts; такое уже через rails s не запустишь; вот хотелось бы понять, как можно это отдебажить )

        P.S. пробовал законектиться ко всем процессам passenger: к некоторым не получилось подключиться вовсе, а к тем что получилось, не реагируют на точки останова.
        • 0
          Понял, донесу до команды ваш кейс, но обещать пока ничего не могу.

          Спасибо за P.S., завели баг. Вот здесь можно отслеживать задачку (а еще можно поставить "+").
          • 0
            Спасибо!
            Круто что так быстро реагируете!
  • 0
    Поправьте уже стиль шрифта oblique на italic, пожалуйста, глаз режет!
    • 0
      Уточните, пожалуйста, вашу просьбу.
      • +1
        В редакторе, там, где синтаксис выделяется наклонным стилем (например, комментарии, или как «find» в Array.find у вас на скриншоте), но используется не родной стиль шрифта Italic, а просто наклоненный Regular (хотя в настройках по-моему он указан именно как italic).

        Я понимаю, это не особо важная фигня на самом деле, но с Italic-ом намного читабельнее, не так скачет код.
        • 0
          Ага, спасибо. Вы не могли бы предоставить информацию с About RubyMine (можно скриншот), подсказать вашу операционную систему, а также название используемого шрифта? Нашли похожее issue, можно туда все отправить.

  • 0
    Ребят, вы добавили поддержку fish, но у меня до этого нормально всё работало. А сейчас наоборот oh my fish вылетает :(
    • 0
      А попробуйте снять флажок с Shell integration в настройках. Settings | Terminal | Shell integration.
      Помогло?
  • 0
    Спасибо за вашу работу.
    Планируете ли вы добавить полноценную поддержку тем и корректное отображение меню в Unity DE на Ubuntu? (по замыслу должно скрываться и отображаться вверху, как на маке)
    • 0
      И вам спасибо за отзыв.
      А вас не затруднит чуть более подробно описать ваши пожелания в комментариях данного тикета?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка