RubyMine 2017.3 - новая версия IDE для Ruby и Rails
IDE стала умнее
Скорость
JetBrains удалось сделать IDE быстрее, что заметно при работе с крупными приложениями. К примеру, теперь проверка всего кода на ошибки (Code | Inspect Code) занимает значительно меньше времени по сравнению с RubyMine 2017.1 и 2017.2:
Навигация к объявлению методов
Пользователи любят RubyMine за возможность быстрого перехода к определениям методов и переменных в проекте и используемых гемов, и мы стараемся улучшать эту функциональность. Так, навигация к рельсовым колбэкам и респондерам в версии 2017.3 стала значительно надежнее:
Мы всерьез настроены улучшать базовую поддержку Ruby и Rails и в последующих версиях.
IDE распознает вызываемые параметры
И не просто распознает, а гораздо лучше, чем раньше. RubyMine подскажет, если количество передаваемых аргументов не соответствует их исходному количеству в объявленном методе:
Поддержка приложений с вложенными проектами
IDE научилась распознавать вложенные проекты, корректно устанавливать зависимости и переходить к ним при необходимости:
Если ваше приложение является монорепозиторием, попробуйте новую версию и сообщите нам, если столкнетесь с проблемами.
Поддержка WSL
Если у вас Windows, то не проходите мимо этой новой возможности. RubyMine научился работать с Windows Bash, что позволяет избежать болезненных настроек Ruby на “винде”. Рецепт:
- Установить bash согласно данному руководству.
- Добавить WSL в качестве удаленной SDK в настройках (Preferences / Settings | Languages & Frameworks | Ruby SDK and Gems | New remote).
- Забыть, что вы имеете дело с Windows.
Улучшенный рефакторинг
RubyMine обладает набором рефакторингов, позволяющих удобно приводить код в порядок. В частности, опция Extract Method помогает быстро вынести логически выделенный по смыслу код в отдельный метод. Теперь эта опция может еще и сразу вынести код в секцию private или protected. Если секция еще отсутствует в файле, то RubyMine создаст ее самостоятельно:
RuboCop теперь еще круче
В предыдущем релизе JetBrains научили RubyMine применять автокоррекции RuboCop для всего файла прямо из редактора. Начиная с версии 2017.3 вы можете не только обнаружить и исправить все ошибки, но и пофиксить лишь определенный cop department или offense class (блог). Никаких плагинов, все работает сразу “из коробки”!
Вместе с тем, RubyMine учитывает наличие .rubocop.yml и отображает нарушения согласно настройкам:
Кстати, нас также спрашивают, умеет ли IDE отображать кастомные пользовательские инспекции. Умеет, и некоторые пользователи уже в этом убедились:
Больше опций code style
В настройках (Preferences / Settings | Editor | Code style | Ruby) теперь можно задать отступы для private и protected секций. RubyMine запомнит выбранные настройки и использует их при форматировании кода в редакторе (Code | Reformat code):
Также, теперь можно выбрать какие операторы должны обосабливаться пробелами, а какие оставаться нетронутыми форматтером:
Поддержка EPP-темплейтов
Некоторые наши пользователи занимаются управлением конфигураций и используют Puppet. Для них реализована поддержка Embedded Puppet. В частности, добавлено автозаполнение и навигация к EPP-темплейтам и манифестам:
А еще IDE быстро находит все использования темплейтов в проекте, и умеет удобно переименовывать переменные и параметры во всем приложении:
Таймаут для отладчика
JetBrains добавили опцию Trace to_s evaluation (Preferences / Settings | Build, Execution, Deployment | Debugger), при выборе которой отладчик начнет выбрасывать сообщения о таймауте в случае оверхеда:
Таймаут можно настроить по времени, а можно и отключить вовсе:
VCS
Interactive rebase последних изменений в Git теперь можно запустить прямо из лога, нажав на базовый коммит:
При переключении между ветками IDE сохраняет состояние workspace: расположение вкладок редактора, окон инструментов и т. п.:
В гит-лог добавлен режим Show Changes to Parents. В этом режиме правая панель в логе показывает не только изменения в файлах с конфликтами, но и отдельно неконфликтные изменения для каждой ветки, участвующей в слиянии:
REST-клиент
Отныне работать с REST-запросами можно при помощи нового инструмента на основе редактора. Достаточно создать файл в проекте с разрешением .http и открыть его в редакторе:
Детальный разбор работы с новым REST-клиентом.
Улучшения JavaScript
- Для Vue.js появилось автодополнение кода и навигация для props, свойств и методов, а также новая коллекция шаблонов кода.
- Новые рефакторинги Extract type alias и Extract interface для TypeScript.
- Обновленная документация и улучшенное автодополнение для стандартных методов и объектов JavaScript. Открытие проектов стало быстрее благодаря предварительно построенным индексам для этих методов.
- Импорты в JavaScript- и TypeScript-файлах теперь добавляются автоматически при копировании и вставке кода из одного файла в другой.
Подробнее об улучшениях можно узнать на странице What’s new in WebStorm, а также в ролике:
Базы данных
- Если вы работаете с большим количеством источников данных (data sources), эти источники данных теперь можно организовать в группы.
- Для удобства работы с числовыми данными в таблице теперь они выравниваются по правому краю.
- Для PostgreSQL в окне инструментов Database отображаются Users и Roles, а также поддерживаются Foreign Data Wrappers.
- Можно вставлять данные в таблицу из Excel.
- Несколько значений таблицы можно сравнивать между собой.
- Экспорт в DDL теперь поддерживает больше опций и доступен через Context menu | SQL Scripts | SQL Generator.
- Автодополнения для JOIN стали сообразительнее.