Что нового в RubyMine 2022.1

Поддержка новых возможностей языка Ruby и RBS, новые инспекции и быстрые исправления, улучшения в интерфейсе и многое другое.

Ruby

Поддержка новых возможностей языка

RubyMine 2022.1 поддерживает новые возможности Ruby и RBS, появившиеся в Ruby 3.1, в том числе ограниченные универсальные типы, коллекции RBS, передачу аргументов анонимных блоков, псевдонимы универсальных типов и др.

Новые инспекции

Мы добавили несколько новых инспекций для проверки использования переменных типов в RBS. Они сообщают об отсутствии сигнатур типа, использовании недопустимого аргумента типа, конфликтах вариантности переменных типа, ошибках вариантности аргумента типа и других проблемах.

Переопределение при просмотре Quick Documentation

Новая версия RubyMine отображает переопределения при просмотре Quick Documentation (Ctrl+Q). Если вызвать Quick Documentation для метода, будет показано соответствующее переопределение.

Встроенные подсказки для методов Ruby на основе RBS

Теперь RubyMine показывает встроенные подсказки для кода Ruby на основе сигнатур типа из соответствующих файлов RBS. Нажав на подсказку, вы перейдете к соответствующей сигнатуре типа.

Быстрое исправление для несоответствующих сигнатур типа

RubyMine сообщает о выведенных типах в коде Ruby, которые не соответствуют ожидаемому типу из RBS. Начиная с версии 2022.1, в этих случаях можно быстро перейти к соответствующему RBS-файлу.

Улучшенное автодополнение для тега YARD @overload

RubyMine понимает тег @overload и предлагает все возможные переопределения при отображении информации о параметре. Начиная с этой версии, автодополнение для тега @overload подставляет имя описываемого метода.

Взаимодействие с IDE

Обновленный диалог New Project

Мы переработали интерфейс диалога New Project, чтобы упростить создание проектов как для новичков, так и для опытных пользователей.

Поддержка новых параметров generate в Rails 7

В новой версии добавлена поддержка новых параметров создания проектов для фреймворка JavaScript, появившихся в Rails 7. Теперь их можно выбрать при создании проекта через диалог New Project.

Новое окно Notifications

Мы заменили журнал Event Log новым окном Notifications. Теперь получать уведомления от IDE будет удобнее, и вы не пропустите ничего важного. Уведомления в этом окне делятся на две категории: Suggestions и Timeline.

Обновленный диалог Open File or Project

Мы убрали из диалога Open File or Project дерево, поэтому IDE больше не вычисляет при открытии все промежуточные узлы директорий. Это повышает общую производительность IDE, предотвращая долгие зависания из-за вычисления тупиковых путей.

Скрытые названия вкладок в отладчике

Чтобы в окне Debugger было больше места, по умолчанию названия вкладок теперь скрыты.

Обновленный диалог Structural Search and Replace

Мы переработали диалог Structural Search and Replace, добавив в него список всех шаблонов, чтобы между ними было проще переходить.

Редактор

Отступ перед модификаторами видимости

Теперь для модификаторов видимости (public, protected, private) и кода внутри них можно задать отступ: в меню Preferences/Settings | Editor | Code Style | Ruby | Tabs and Indents поставьте флажок Indent visibility modifiers.

Переформатирование кода в режиме LightEdit

В режиме LightEdit можно редактировать файлы, не создавая и не загружая проект, а теперь можно и переформатировать код. Для этого нажмите Ctrl+Alt+L или откройте Code | Reformat Code в главном меню.

Запуск команд из файлов Markdown

При работе с Markdown-файлами в редакторе вы увидите новую иконку на полях рядом с командами оболочки. Нажав на нее, можно выполнить команду во встроенном терминале RubyMine. Это удобно при выполнении инструкций, например, в файлах README, где часто приводятся команды оболочки.

Копирование фрагмента кода из Markdown

С помощью нового действия Copy code snippet можно скопировать содержимое блока кода в буфер обмена.

Другие действия на панели инструментов в Markdown-редакторе

На плавающей панели инструментов, которая появляется при выделении текста в Markdown-файлах, появились новые функции. Теперь там можно быстро выбрать стиль заголовка и создать список.

Тестирование

Переход к общим контекстам и примерам в RSpec

Теперь от спецификаций можно легко перейти к использованным в них общим контекстам и примерам. Для этого нажмите Ctrl и щелкните на выражении, которое добавляет общий ресурс: include_context, include_examples, it_behaves_like или it_should_behave_like.

Docker

Обновленное окно Services

Мы значительно переработали интерфейс Docker в окне Services. Изменения коснулись настроек контейнеров, образов, сетей и томов.

Поддержка Docker Registry V2

Добавлена поддержка Docker Registry HTTP API V2, который используется с Docker 1.6 и более поздними версиями. Он позволяет создавать простые или защищенные паролем реестры Docker V2, а также выполнять привычные действия: просматривать, отправлять и извлекать образы.

Управление версиями

Действие Annotate with Git Blame

Чтобы анализировать внесенные изменения было проще, мы улучшили работу действия Annotate with Git Blame. При наведении курсора на аннотацию IDE подсвечивает различия между строками в редакторе, а при нажатии на аннотацию открывает вкладку Log в окне Git.

Новый интерфейс Git File History, независимый от индексирования

Новый интерфейс окна Git File History теперь не зависит от процесса индексации: данные отображаются, даже если индексация лога выключена.

Веб-разработка и фреймворки

Улучшенная поддержка Next.js

Благодаря встроенной поддержке React все основные функции IDE уже должны были работать в проектах Next.js. Мы добавили поддержку страниц — одной из наиболее важных вещей, специфичных для Next.js. Теперь IDE умеет разрешать пути, указанные в свойстве href компонентов Link, а также в теге form и других тегах. Автодополнение, навигация и рефакторинги тоже работают.

Поддержка Volta

Мы добавили интеграцию с Volta, менеджером JavaScript-инструментов. RubyMine автоматически распознает Yarn и npm, установленные с помощью Volta.

Другие улучшения

  • Инструмент чтения с экрана теперь озвучивает названия и описания деревьев веток: это упрощает навигацию по вкладке Log.
  • Улучшена поддержка режима специальных возможностей на macOS. Мы решили проблему с VoiceOver, которая приводила к ненужному многократному повторению элементов списка, и исправили ошибку позиционирования курсора VoiceOver при работе с внешним дисплеем. Кроме того, теперь VoiceOver читает содержимое полей со списками.
  • В новой версии стало проще работать с предлагаемыми изменениями: теперь можно применять изменения и делать коммиты локально прямо из IDE.
  • При работе с базами данных теперь можно выбрать несколько таблиц и скопировать их в другую схему.
  • Мы добавили новое intention-действие для обработки запросов к базе данных: Convert To Subquery. Теперь не нужно даже выбирать запрос — достаточно нажать Alt+Enter | Convert To Subquery.
  • Добавлена поддержка логики разрешения суперклассов RBS, которая была изменена для согласования с Ruby: RUBY-29164.
  • Прекращена поддержка Rails 3.
  • Ключевое слово extend добавляет методы к отдельным классам и не должно иметь доступ к переменным типа. Теперь RubyMine выдает ошибку при попытке использовать переменные типа с extend: RUBY-29099.
  • Мы обновили панель Commit Details в окне Git: теперь на ней есть информация о цифровых подписях GPG и статусе сборки. Раньше эти данные можно было посмотреть только в Git-логе.
  • Добавлена поддержка Corepack — экспериментального инструмента Node.js, который позволяет использовать Yarn и pnpm, не устанавливая их. Чтобы попробовать, выполните во встроенном терминале команду corepack enable, поскольку эта функция по умолчанию отключена.
  • Теперь автодополнение Tailwind CSS работает в шаблонах FreeMarker.
  • Мы удалили шаблоны файлов HTML4 и XHTML, поскольку они редко использовались.
  • Помощь в написании кода для webpack теперь работает при использовании ES-модулей в файлах webpack.config.js.
  • Инструмент форматирования из командной строки теперь поддерживает режим dry run для проверки файлов проекта.
  • Теперь в режиме Split вкладки можно сделать одинаковыми по ширине. Для этого выберите опцию Equalize proportions in nested splits в настройках Preferences / Settings | Advanced Settings.
  • В новой версии UML-диаграммы можно экспортировать в форматах yEd (.graphml), JGraph (.drawio), Graphviz (.dot и .dot с позициями), Mermaid (.md), Plantuml, а также в виде файлов .uml IDEA. Благодаря этому их можно использовать в других инструментах. Для экспорта используйте соответствующие действия из контекстного меню (открывается по щелчку правой кнопкой мыши).