Что нового в RubyMine 2020.2

Новый способ исправления проблем в коде, 27 дополнительных intention-действий, поддержка Liquid, расширенная поддержка пул-реквестов GitHub и много других возможностей для Ruby, Rails, JS и работы с базами данных.

Анализ кода

Новый способ просмотра и исправления проблем в коде

Новый способ просмотра и исправления проблем в коде

Мы добавили новый виджет, который показывает количество ошибок в текущем файле. Нажмите на него, чтобы открыть окно со списком проблем, из которого вы сможете перейти к некорректному коду и исправить ошибки прямо в окне.

Подробнее

Язык шаблонов Liquid

Базовая поддержка Liquid

Базовая поддержка Liquid

RubyMine теперь поддерживает язык шаблонов Liquid. IDE обнаруживает проблемы с синтаксисом, предоставляет шаблоны часто используемых конструкций и форматирует код в соответствии с требованиями, указанными в настройках стиля кода.

Подробнее

Новые intention-действия

В RubyMine 2020.2 много новых intention-действий (Alt+Enter) для быстрой оптимизации кода.

Инвертирование if-else и тернарных операторов

Инвертирование if-else и тернарных операторов

Действие Invert ‘if-else’ поможет инвертировать оператор if-else: изменить условие на противоположное и поменять ветки местами. Для тернарных операторов по тому же принципу работает действие Flip ‘?:’.

Преобразование вложенных операторов if в логические выражения

Преобразование вложенных операторов if в логические выражения

Используйте действие Merge nested ‘if’, чтобы преобразовать вложенный оператор в логическое выражение. Для вызова действия, поместите курсор во внешнее выражение if.

Действие Split into multiple ‘ifs’ выполнит обратное преобразование.

Подробнее

Преобразование else/if в elsif

Преобразование else/if в elsif

С помощью действий Merge ‘else if’ и Split ‘elsif’ можно преобразовать оператор elsif во вложенную ветку else/if и наоборот.

Объединить/разбить последовательные операторы if

Объединить/разбить последовательные операторы if

Для ключевых слов elsif и if доступно действие Merge/split sequential ‘if’s. RubyMine предложит объединить две ветки, если в них содержится идентичный код. IDE объединит два условия с помощью оператора || и добавит круглые скобки, если необходимо. Действие Split into multiple ‘if’s произведет обратное преобразование.

Развернуть или свернуть пространство имен

Развернуть или свернуть пространство имен

Действие Expand namespace преобразует строки с операторами разрешения области видимости :: во вложенные модули. Обратите внимание: действие Flatten namespace сворачивает модули, расположенные над оператором.

Сортировать хеши по ключам

Сортировать хеши по ключам

Действие Sort hashes by keys сортирует хеши по ключам в алфавитном порядке. Оно работает и для хешей с разными типами ключей. В этом случае ключи будут сгруппированы по типу, а затем отсортированы.

Подробнее

Добавить/удалить уточняющие скобки

Добавить/удалить уточняющие скобки

Действие Add clarifying parentheses работает для бинарных и тернарных выражений. IDE добавит круглые скобки в сложные выражения, чтобы уточнить приоритет операторов для корректного вычисления. Также можно удалить лишние скобки с помощью действия Remove unnecessary parentheses.

Подробнее

Добавить/удалить нижние подчеркивания в числах

Добавить/удалить нижние подчеркивания в числах

Действие Add underscores добавляет нижние подчеркивания в большие числа для удобства чтения. Поддерживаются целые, восьмеричные числа, числа с плавающей точкой (подчеркивание добавляется через каждые 3 цифры), шестнадцатеричные и двоичные числа (подчеркивание через каждые 4 символа/цифры).

Чтобы удалить нижние подчеркивания из числа, вызовите действие Remove underscores.

Ввести локальную переменную

Ввести локальную переменную

Используйте действие Introduce local variable, чтобы ввести новую локальную переменную, когда курсор находится внутри выражения.

Подставить локальную переменную

Подставить локальную переменную

Действие Inline local variable пригодится во время рефакторинга в случаях, когда осталась переменная, использованная только один раз.

Заменить блочный комментарий на однострочный

Заменить блочный комментарий на однострочный

Теперь можно преобразовывать блочные комментарии в однострочные и наоборот. Обратите внимание, что эти действия доступны только для комментариев, начинающихся в начале строки — это обязательное условие для блочных комментариев.

Редактор кода

Удобное чтение свернутых выражений if/while/for

Удобное отображение свернутых выражений if/while/for

Для свернутых конструкций, таких как if, while и for, RubyMine теперь отображает условие или используемые переменные на первой строке. Так легче понять, что содержит конструкция, не разворачивая ее.

Рендеринг комментариев RDoc/YARD в редакторе

Читать комментарии RDoc or YARD весьма неудобно из-за обилия тегов, особенно при взаимодействии со ссылками и изображениями. Поэтому мы добавили рендеринг документации прямо в редактор.

Для этого выберите опцию Render documentation comments в меню Preferences/Settings | Editor | General | Appearance.

Вставки heredoc

Вставки heredoc

RubyMine теперь поддерживает многострочные вставки heredoc, сохраняя при этом исходное форматирование и отступы. Это полезно при добавлении фрагментов кода на HTML или SQL.

Подробнее

Улучшенная навигация между методами

Улучшенная навигация между методами

Теперь можно перемещаться между переопределенным и переопределяющим методами с помощью intention-действия или значка на поле редактора.

Ruby

Поддержка диапазонов без начального значения

Поддержка диапазонов без начального значения

Как и всегда, RubyMine поддерживает свежие возможности Ruby, например диапазоны без начального значения, которые появились в Ruby 2.7.

Улучшенное автодополнение методов стандартной библиотеки

Улучшенное автодополнение методов стандартной библиотеки

RubyMine предлагает более точные варианты автодополнения для множества методов стандартной библиотеки, например Array#sort_by, Hash#each и других.

Преобразование именованных параметров в нумерованные и наоборот

Преобразование именованных параметров в нумерованные и наоборот

Теперь можно легко преобразовать именованные параметры в нумерованные — синтаксис, появившийся в Ruby 2.7. Установите курсор внутри любого именованного параметра, нажмите Alt+Enter и выберите действие Convert named parameters to numbered. Для обратного преобразования используйте действие Convert numbered parameters to named.

Подробнее

Добавление attr_accessor/reader/writer к переменной экземпляра

Добавление attr_accessor/reader/writer к переменной экземпляра

Новые действия позволяют легко добавить методы attr_accessor, attr_reader и attr_writer к переменным экземпляра. Для этого поместите курсор внутрь переменной и нажмите Alt+Enter.

Rails

Развернуть «ленивые» ключи

Развернуть «ленивые» ключи

В приложениях Rails, в которых используются «ленивые» ключи (lazy lookups), действие Expand lazy keys автоматически развернет ключ до полной формы. Если в контроллере есть «ленивый» ключ, RubyMine может спросить, как именно его следует развернуть, так как возможно несколько вариантов.

Git

Полная поддержка пул-реквестов GitHub

При работе с GitHub больше не нужно переключаться между браузером и IDE: все действия по обработке пул-реквестов можно выполнить прямо из RubyMine.

В версии 2020.2 вы можете просматривать, назначать и даже объединять пул-реквесты, читать встроенные комментарии и изучать хронологию, отправлять комментарии и ревью, а также принимать изменения.

Подробнее

Обновленные диалоги для работы с Git

Мы обновили дизайн диалогов Merge, Pull и Rebase — взаимодействовать с ними стало удобнее. Сразу видно, какая Git-команда будет выполнена.

Кроме того, мы добавили новые параметры, например –rebase в диалоге Pull и –no-verify в диалоге Merge.

JavaScript и TypeScript

Новые intention-действия для JavaScript

Новые intention-действия для JavaScript

Новые intention-действия (Alt+Enter) сэкономят ваше время. Например, можно быстро преобразовать цикл for с числовым индексом в перебирающий метод forEach. Кроме того, стало проще просматривать документирующие комментарии в файлах JavaScript и TypeScript: мы сделали рендеринг прямо в редакторе — теперь все четко и аккуратно.

Prettier в качестве форматера по умолчанию в JavaScript-проектах

Prettier в качестве форматера по умолчанию в JavaScript-проектах

Форматирование кода с помощью Prettier стало еще удобнее. Просто отметьте галочкой новую опцию On code reformat в настройках, и RubyMine будет использовать Prettier вместо встроенного форматера. По умолчанию это работает только для файлов .js, .ts, .jsx и .tsx, но вы можете легко добавить другие типы файлов.

Подробнее

Первоклассная поддержка Vue

Первоклассная поддержка Vue

В этой версии вас ждет поддержка Nuxt.js, настройки стиля кода для Vue, улучшенная обработка Vue-файлов в TypeScript-проектах и многое другое, что мы реализовали за последний год. Работать с проектами Vue в RubyMine стало еще удобнее.

Подробнее

Инструменты для работы с базами данных

Редактор больших значений

Редактор больших значений

Мы добавили полноценный редактор к ячейкам. Если в ячейке длинное значение, его удобно открыть в отдельной панели.

Новое отображение логических ячеек

Новое отображение логических ячеек

Просматривать и редактировать ячейки с типом boolean стало гораздо удобнее. Значения true помечены точкой, чтобы их можно было легко найти среди остальных.

Редактирование:

  • Переключайтесь между доступными значениями, используя пробел.
  • Для ввода нужного значения (false, true, default, null, generated или computed) достаточно ввести первую букву: f, t, d, n, g или c.
  • Если напечатать что-то другое, откроется выпадающий список.

Другие изменения

  • Автодополнение на основе машинного обучения, которое мы представили в версии 2020.1, доказало свою эффективность — предлагаемые варианты стали точнее. В новой версии мы включили его по умолчанию.
  • Результаты поиска в Search Everywhere теперь отсортированы по релевантности запросу.
  • RubyMine 2020.2 поддерживает Git, установленный в WSL2, для работы над проектами, расположенными в файловых системах Linux или Windows.
  • Теперь можно генерировать отчеты о покрытии кода для нескольких наборов тестов и экспортировать их в HTML.
  • Появилась базовая поддержка SQL-диалекта Google BigQuery: работает подсветка и автодополнение.
  • Автодополнение теперь показывает полные имена типов для методов, которые переопределяют другие методы из родительских классов или модулей. Так проще понять, откуда взялся предложенный метод.
  • Теперь вы можете запустить консоль IRB из Run Anything с Ruby 2.7.
  • Автодополнение в Gemfile теперь предлагает только последнюю локальную версию гемов.
  • RubyMine покажет предупреждение, если вы попытаетесь передать неверное количество параметров в методы-заглушки, включая Array.to_h(), Dir.each() и т. п.
  • Мы добавили предупреждение ordinary parameter is defined для нумерованных параметров внутри лямбда-выражений.
  • Мы добавили поддержку типов для вызова not в цепочках отношений active record. Теперь, если у метода where нет никаких аргументов, автодополнение предложит подставить not.
  • Теперь RubyMine автоматически включает специальные возможности, если у пользователя работает программа чтения с экрана.