Что нового в RubyMine

2019.2 (29 июля)

В RubyMine 2019.2 добавлена поддержка Rails 6 и Ruby 2.7, улучшен отладчик и поддержка YARD, а также включено множество платформенных улучшений. Ознакомьтесь со списком изменений ниже и обновитесь уже сегодня. Мы также будем рады, если вы сообщите нам о каких-либо проблемах или присоединитесь к Slack-каналу RubyMine.

Бесплатная пробная версия на 30 дней

Отладчик

Сравнение скорости отладки для версий 2019.1 и 2019.2

Ускоренный отладчик

В отладчике RubyMine для построчного отслеживания выполнения программы использовались события :line из TracePoint. Для версии 2019.2 мы разработали собственное расширение для MRI, которое позволяет отладчику выбирать, на каких фрагментах кода выполнение должно быть приостановлено, и в режиме отладки программа работает быстрее. Это позволило значительно ускорить отладчик и реализовать новые функции, описанные ниже.

Действие Smart Step Into

Действие Smart Step Into

Раньше, если во время сеанса отладки вам встречалась строка кода с несколькими вызовами методов, RubyMine позволял войти только в первый метод на строке. Новая команда Smart Step Into снимает это ограничение и позволяет вам войти и исследовать каждый метод или блок, расположенный на одной строке.

Точки останова для блоков

Точки останова для блоков

В новой версии точки останова можно устанавливать не только на строке кода, но и на блоке. Если щелкнуть на левое поле, чтобы установить точку останова, RubyMine спросит, хотите ли вы установить ее на строке, на блоке или же и там, и там.

Подробнее об отладке в RubyMine скриптов на Ruby, в т. ч. с использованием Rails, можно узнать в статье Отладка в RubyMine.

Ruby 2.7

Сопоставление с образцом

RubyMine 2019.2 поддерживает механизм сопоставления с образцом, добавленный в первой предварительной версии Ruby 2.7 в качестве экспериментальной функциональности. IDE распознает новый синтаксис и помогает вам перемещаться между объектами, находить их вхождения и переименовывать их.

Подробнее о механизме сопоставления с образцом в Ruby

Нумерованные параметры блоков

Нумерованные параметры блоков

Новая версия RubyMine распознает синтаксис нумерованных параметров и может отображать и находить их вхождения. Нумерованные параметры также являются частью экспериментальной функциональности Ruby 2.7 и позволяют передавать параметры в блоки, используя номер параметра в качестве его имени по умолчанию, вместо того чтобы определять переменную блока.

Rails 6

Поддержка Action Mailbox

Action Mailbox

RubyMine 2019.2 поддерживает Action Mailbox, который будет включен в Rails 6. IDE поддерживает автодополнение методов маршрутизации и callback-функций, а также переход между их реализациями и обращениями к ним.

Инспекции Action Mailbox

Мы также добавили пару инспекций, которые сообщат вам, если вы забудете добавить вызов routing в ApplicationMailbox или метод process в mailbox. Вторая инспекция также позволяет добавить недостающий метод с помощью быстрого исправления (Alt+Enter).

Подробнее об использовании Action Mailbox вы можете узнать в этом выпуске GoRails.

Поддержка Enum

Добавлена полноценная поддержка анализа кода для ActiveRecord::Enum. Она включает в себя автодополнение, навигацию, а также поиск вхождений для имен значений типа enum и их методов. Также поддерживаются отрицающие области поиска (negative scopes) для значений типа enum, добавленные в Rails 6.

YARD

Улучшенная поддержка YARD

Улучшенная поддержка YARD

Мы постепенно улучшаем поддержку YARD, чтобы позволить вам создавать и управлять YARD-тегами, а также использовать в RubyMine улучшенное дополнение кода на основе YARD-аннотаций. В новой версии реализована поддержка аннотации типов и инспекций для тегов @overload и @yieldparam.

Подробнее о возможностях и недавних улучшениях в RubyMine, связанных с YARD, можно узнать в статье Поддержка YARD в RubyMine.

Factory Bot

Переименование фабрик

Переименование фабрик

В версии 2019.2 можно переименовывать (Shift+F6) фабрики, последовательности и типажи (traits). IDE найдет их определения и предложит переименовать их, а также переименовать все их вхождения и сам файл, если его имя совпадает с названием фабрики.

Кроме того, мы добавили отображение фабрик, последовательностей и типажей на панели File Structure (Cmd/Alt+F7) и в одноименном всплывающем окне (Cmd/Ctrl + F12), а также реализовали возможность их безопасного удаления (Refactor | Safe Delete).

JavaScript

Интеншены для деструктуризации

Новые интеншены

Новый интеншен Propagate to destructuring (Alt-Enter) позволяет заменять избыточные переменные еще одной деструктуризацией, если это возможно. Чтобы полностью убрать деструктуризацию, используйте интеншен Replace destructuring with property or index access.

Динамические вхождения в Refactoring Preview

Улучшенный рефакторинг Rename

Теперь, когда вы переименовываете идентификатор в файле JavaScript или TypeScript, IDE группирует динамические вхождения отдельно от остальных вхождений и по умолчанию исключает их из рефакторинга. Это позволяет проводить рефакторинг с большей точностью и дает вам возможность лучше контролировать переименование с помощью окна Refactoring Preview.

Свойства Vuetify

Улучшенная поддержка библиотек Vue-компонентов

Автодополнение кода для компонентов и свойств компонентов, входящих в Vuetify, BootstrapVue, Quasar и некоторые другие библиотеки компонентов Vue, стало более точным. Это стало возможным благодаря новому подходу к работе с библиотеками Vue-компонентов, который мы реализовали в IDE.

Инспекция для обнаружения дублирующегося кода

Поиск дубликатов

Новая инспекция Duplicate code fragment в реальном времени проверяет ваш код и немедленно подсвечивает в редакторе потенциально дублирующиеся участки. Инспекция работает для кода на JavaScript, TypeScript, CSS, Sass, SCSS и Less.

Узнайте, что нового в WebStorm, — по ссылке вы найдете подробную информацию об улучшениях для JavaScript в RubyMine 2019.2.

Стиль кода

Редактирование конфигураций стиля кода

Улучшенная поддержка EditorConfig

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

Скрипты командных оболочек

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

Редактирование скриптов командных оболочек

В новой версии реализована поддержка скриптов командных оболочек. В нее входит автодополнение слов и путей, быстрый доступ к документации, переименование идентификаторов в коде для файлов .sh и .bash и даже поддержка конфигураций запуска скриптов командных оболочек. В IDE также доступна интеграция с ShellCheck для проверки кода и shfmt для его форматирования.

Git

Автодополнение для .gitignore

Автодополнение в файлах .gitignore

Теперь RubyMine предлагает варианты автодополнения для имен файлов и папок в файлах .gitignore. Используйте сочетание клавиш Cmd/Ctrl-щелчок мышью на имени файла или папки для перехода к соответствующему объекту в окне Project. Вы также можете быстро добавлять файлы в .gitignore с панели Project и из вкладки Local Changes — щелкните имя файла правой кнопкой мыши и выберите Add to .gitignore.

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

Улучшения инструментов для работы с базами данных - Полнотекстовый поиск

Полнотекстовый поиск по базам данных

Теперь вы можете находить данные в базах данных, даже если не знаете их точного расположения. Щелкните правой кнопкой на источнике данных, в котором хотите выполнить поиск, и выберите Full-text Search (Ctrl+Alt+Shift+F / Cmd+Alt+Shift+F). По запросу будут показаны только те строки, которые содержат нужные вам данные.

Узнайте, что нового в DataGrip, — по ссылке вы найдете подробную информацию об улучшениях в работе с базами данных в RubyMine 2019.2.

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

  • Поддержка стандартных гемов
  • Поддержка Action Text
  • Поддержка Cucumber 4
  • Мелкие улучшения интерфейса в окне Version Control
2019.1 (4 апреля)

Docker

Docker-compose exec

Работайте с Docker по-новому

В RubyMine добавлена поддержка
docker-compose exec. Эта команда позволяет запускать и отлаживать приложения, устанавливать гемы и выполнять другие задачи быстрее, чем раньше.

Подробности смотрите в статье Работа с Docker/Docker Compose в RubyMine.

Экспериментальная функциональность: запуск с Docker Compose.

IDE стала быстрее

В разделе экспериментальной функциональности вы можете включить ruby.docker.internal.via.exec для ускорения RubyMine при работе с Docker SDK.

Теперь вы можете добавлять гемы, запускать задачи Rake и команды Rails, а также выполнять другие операции без пересборки Docker-образов.

Диалог Recent Locations

Диалог Recent Locations

Всплывающее окно Recent Locations

В RubyMine появилось новое всплывающее окно Recent Locations для удобной навигации по кодовой базе. Всплывающее окно поможет быстро перейти к нужному вам коду, если вы помните его примерное содержание, но не помните, где он находился. Начните набирать текст, чтобы отфильтровать результаты, и перейдите к нужному вам коду.

Подробности смотрите в статье Навигация в RubyMine: всплывающее окно Recent Locations.

Профилировщик

Создание переводов

Профилирование приложений

RubyMine 2019.1 интегрируется с rbspy и предоставляет встроенный профилировщик, который поможет найти код, замедляющий тестирование или работу вашего приложения.

Узнайте, как пользоваться профилировщиком в нашем блоге.

Подключение профилировщика к работающим приложениям

Подключение к работающим приложениям

Профилировщик можно подключить к запущенному приложению (Find action / Attach Profiler to Process) и исследовать его в реальном времени.

Factory Bot

Автодополнение и навигация для атрибутов

При добавлении фабрики RubyMine предложит варианты автодополнения для ее атрибутов и, по возможности, их значений. Например, если вы добавите фабрику для модели Rails, IDE будет автоматически дополнять связи и значения для полей. И разумеется, вы сможете легко перемещаться между определениями этих объектов и обращениями к ним.

Автодополнение методов для создания фабрики в тестовых файлах

Автодополнение и навигация для методов

При написании тестов доступно автодополнение определений методов для создания фабрик, таких как create, build, build_stubbed, а также возможность быстрого перехода к ним.

Полностью поддерживаются и другие возможности Factory Bot: последовательности, типажи и псевдонимы.

Полная MVC-интеграция

Мы также включили фабрики во всплывающее окно Related files (Navigate / Related symbol) и добавили новую иконку на поле редактора, позволяющую перейти к частичным объявлениям фабрик (при наличии).

Иерархия вызовов

Иерархия вызовов

Исследование вызовов методов

С помощью нового действия Call Hierarchy можно просмотреть все методы, прямо или опосредованно вызывающие исследуемый вами метод, без ограничений в количестве посредников.

Все подробности читайте в нашем блоге.

TruffleRuby

TruffleRuby

Поддержка TruffleRuby

В RubyMine 2019.1 появилась поддержка TruffleRuby! Чтобы переключить текущий Ruby SDK на TruffleRuby, убедитесь, что интерпретатор установлен, и выберите его в настройках Ruby SDK.

Кстати, в этом релизе мы также исправили многие проблемы с менеджерами версий Ruby.

JavaScript

TypeScript в Vue-приложениях

Улучшенная поддержка TypeScript в Vue-приложениях

Мы улучшили поддержку TypeScript в Vue-приложениях: RubyMine теперь использует языковой сервис TypeScript. Это обеспечивает более точную типизацию и информацию о типах, возможность использовать быстрые исправления, предоставляемые языковым сервисом, и возможность просматривать все ошибки TypeScript, обнаруженные в текущем файле, в инструментальном окне TypeScript.

Подсветка строк, на которых тесты не были выполнены

Подсветка строк, вызвавших ошибку при тестировании

Во время тестирования с помощью Jest, Karma, Mocha или Protractor теперь можно прямо в редакторе увидеть, какая строка вызвала неудачное завершение теста. Используя информацию из трассировки стека, IDE подсветит код, который вызвал ошибку. При наведении курсора на подсвеченный код вы увидите сообщение об ошибке и сможете немедленно начать отладку теста.

Обновленная консоль отладчика

Обновленная консоль отладчика

Встречайте полностью обновленную интерактивную консоль отладчика в инструментальном окне Debug для JavaScript и Node.js! Консоль теперь отображает объекты в виде дерева, а также позволяет менять оформление сообщений с помощью CSS и группировать их, используя методы console.group() и console.groupEnd(). Кроме того, сообщения можно отфильтровать по типу.

Обновленная консоль отладчика

Автодополнение скриптов npm

Теперь при добавлении новых скриптов в файл package.json RubyMine предлагает варианты доступных команд, предоставляемых установленными пакетами. Введите «node», и IDE предложит имена папок и файлов. Наберите «npm run», и вы увидите список задач, определенных в текущем файле.

Узнайте, что нового в WebStorm, — по ссылке вы найдете подробную информацию об улучшениях для JavaScript в RubyMine 2019.1.

HTML и CSS

HTML и CSS

Обновленная документация

Документация (F1) теперь содержит актуальные описания CSS-свойств, HTML-тегов и атрибутов с сайта MDN и информацию об их поддержке в браузерах, а также содержит ссылки на соответствующие статьи.

Индивидуальная настройка тем интерфейса

Индивидуальная настройка тем интерфейса

Новые темы интерфейса

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

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

Улучшения инструментов для работы с базами данных - Новые источники

RubyMine 2019.1 включает в себя новую функциональность, разработанную командой DataGrip:

  • Добавлена поддержка баз данных Greenplum, Vertica и Apache Hive.
  • Для CREATE и DROP автодополнение предлагает комбинированные варианты.
  • Появилась поддержка атрибута DEFINER в MySQL и MariaDB.
  • Добавлена поддержка Oracle-режима в MariaDB.
  • Теперь можно выбрать папку проектов по умолчанию.

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

  • Возможность запускать и отлаживать тесты, используя Spring.
  • Полиморфные ассоциации: поддержаны параметры source и source_type.
  • Корректное распознавание дополнительных gemfiles из bundle.config.
  • Возможность указывать путь к локальным гемам в bundle.config.
  • I18n: поддержка ключей default.
  • Улучшена поддержка предикатов наличия полей в моделях Rails.
2018.3 (22 ноября)

Анализ кода

Поддержка Rails scopes

Поддержка областей поиска Rails

В RubyMine улучшена поддержка областей поиска (scopes) Rails. Например, при добавлении в область поиска объекта связи RubyMine автоматически предложит доступные поисковые методы. Вам также доступно автодополнение кода и навигация для цепочек областей доступа.

Поддержка Struct

Struct

В RubyMine добавлена полноценная поддержка Struct. Теперь для классов Struct доступны автодополнение, навигация и рефакторинги, так же как и для любых других Ruby-классов и их экземпляров.

Nullability-анализ в Ruby

Nullability-анализ в Ruby

RubyMine теперь предупреждает о вызовах методов у объектов, которые могут быть nil, и предлагает набор новых быстрых исправлений.

Интернационализация

Создание переводов

Новый диалог позволяет создавать переводы для всех существующих словарей за раз. Как и всегда, поместите курсор на строку, нажмите Alt+Enter и выберите действие I18nize hard-coded string. После генерации, удерживайте Cmd/Ctrl и кликните по созданному ключу, чтобы перейти к любому существующему переводу.

Области имен или «ленивый» путь к ключу

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

Предпросмотр переводов

В RubyMine вы можете просмотреть перевод вместо ключа: просто нажмите Cmd/Ctrl на любом ключе в контроллере или файле представления. Более того, вы можете выбрать, какой словарь следует использовать для предварительного просмотра перевода.

Читайте подробнее об интернационализации в RubyMine 2018.3 в нашем блоге.

Рефакторинг

Обновленный диалог Extract Parameter

Извлечение параметра

В новом диалоговом окне Extract Parameter (Refactor | Refactor this | Extract Parameter) можно не только извлечь аргумент, но и задать для него значение по умолчанию, сделать его необязательным или передать в виде блока.

Улучшенный рефакторинг Inline

Улучшенный рефакторинг Inline

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

Извлечение подстрок в переменные и константы

Извлечение подстрок строковых литералов в переменные и константы

Наконец, мы добавили полезную возможность извлекать части строковых литералов в переменные и константы.

Читайте подробнее о возможностях рефакторинга в нашем блоге.

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

Intention actions

Благодаря новым intention-действиям код будет проще читать. Теперь можно применять законы де Моргана к логическим выражениям и преобразовывать блоки в методы. Просто установите курсор на проблемное место в коде и нажмите Alt+Enter, чтобы применить подходящее автоматическое исправление.

Узнайте подробнее о новых действиях в нашем блоге.

Тесты

Иконки тестов

Иконки тестов

В RubyMine 2018.3 появились удобные иконки для тестовых методов. Они указывают на каждый тест, который можно запустить в файле, и позволяют запускать тесты гораздо быстрее, чем из контекстного меню.

Читайте подробнее о запуске тестов в RubyMine в нашем блоге.

Git

Пулреквесты GitHub

Просмотр пулреквестов

Теперь с пулреквестами можно работать прямо в IDE. Выберите пункт View Pull Requests в меню VCS | Git, в новом окне вы увидите файлы и изменения, а также статус, автора пулреквеста и другую полезную информацию.

Все знакомые функции интеграции c Git, такие как обновление проекта, коммиты изменений, просмотр diff и разрешение конфликтов, теперь доступны и для подмодулей Git.

Пользовательский интерфейс

Новая цветовая схема Darcula

Обновленная тема Darcula

Тема Darcula стала более сдержанной и теперь лучше согласуется с цветовыми схемами, используемыми в других IDE JetBrains.

Если вам больше нравится предыдущий вариант Darcula, вы можете продолжать его использовать. Перейдите в Preferences / Settings | Editor | Color Scheme | Ruby, нажмите на значок шестеренки и выберите Transform current scheme to Darcula 2018.2.

Новый диалог Search Everywhere

Поиск везде

Мы сделали диалог Search Everywhere (Shift+Shift) еще удобнее. Стало проще пользоваться и другими возможностями навигации: Go to Class, File, Symbol и Action. Чтобы переключаться между этими типами поиска, просто нажмите Tab.

Новый интерфейс плагинов

Интерфейс плагинов

В обновленном разделе плагинов (Preferences / Settings | Plugins) стало проще устанавливать, удалять и обновлять плагины, а также управлять ими. Теперь можно искать плагины по тегам и сортировать результаты поиска по имени, рейтингу, количеству скачиваний или обновлениям.

JavaScript

Улучшенное автодополнение в Angular-шаблонах

Фреймворки

Работать с Angular-приложениями стало удобней: автодополнение и навигация для переменных, атрибутов и выражений в шаблонах работают намного точнее.

В React-приложениях автодополнение теперь предлагает все lifecycle-методы компонентов, а инспекция Unresolved variable предупредит вас, если используемый компонент не был определен в приложении.

Автоматические импорты в JavaScript-файлах

Автоматические импорты в JavaScript-файлах

Импорты в JavaScript-файлах теперь добавляются автоматически не только для символов, определенных в проекте, но и для символов из зависимостей проекта, если эти библиотеки были написаны как ES-модули или в них есть d.ts-файлы. если эти библиотеки были написаны как ES-модули или в них есть d.ts-файлы.

Извлечение набора правил CSS

HTML и языки стилей

С помощью нового действия Extract ruleset (Alt-Enter) можно быстро переместить CSS-правила из существующего блока в новый.

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

Узнайте, что нового в WebStorm — там вы найдете подробную информацию об улучшениях для JavaScript в RubyMine.

Markdown

Улучшения поддержки Markdown

Введение именованных ссылок

Новое действие Introduce reference помогает вводить именованные ссылки. IDE найдет все дубликаты ссылок в файле и предложит заменить их новым именем.

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

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

  • Улучшенная подсветка ключевых слов в условных выражениях
  • Поиск значений в YAML-файлах по вложенным ключам, записанным в одну строчку
  • Копирование пути к значению в YAML-файлах из breadcrumbs
  • Улучшенная поддержка attr_accessors
  • Подсказки параметров в JavaScript-файлах
  • Высококонтрастная тема интерфейса
  • Безопасное удаление при интернационализации
  • Мониторинг активности