company_banner

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.

    Спасибо за внимание! Будем рады услышать ваши мнения в комментариях и постараемся поддержать обсуждение.
    JetBrains 132,97
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 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
                И вам спасибо за отзыв.
                А вас не затруднит чуть более подробно описать ваши пожелания в комментариях данного тикета?

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

              Самое читаемое