В RubyMine 2019.2 добавлена поддержка Rails 6 и Ruby 2.7, улучшен отладчик и поддержка YARD, а также включено множество платформенных улучшений. Ознакомьтесь со списком изменений ниже и обновитесь уже сегодня. Мы также будем рады, если вы сообщите нам о каких-либо проблемах или присоединитесь к Slack-каналу RubyMine.
В отладчике RubyMine для построчного отслеживания выполнения программы использовались события :line из TracePoint. Для версии 2019.2 мы разработали собственное расширение для MRI, которое позволяет отладчику выбирать, на каких фрагментах кода выполнение должно быть приостановлено, и в режиме отладки программа работает быстрее. Это позволило значительно ускорить отладчик и реализовать новые функции, описанные ниже.
Раньше, если во время сеанса отладки вам встречалась строка кода с несколькими вызовами методов, RubyMine позволял войти только в первый метод на строке. Новая команда Smart Step Into снимает это ограничение и позволяет вам войти и исследовать каждый метод или блок, расположенный на одной строке.
В новой версии точки останова можно устанавливать не только на строке кода, но и на блоке. Если щелкнуть на левое поле, чтобы установить точку останова, RubyMine спросит, хотите ли вы установить ее на строке, на блоке или же и там, и там.
Подробнее об отладке в RubyMine скриптов на Ruby, в т. ч. с использованием Rails, можно узнать в статье Отладка в RubyMine.

RubyMine 2019.2 поддерживает механизм сопоставления с образцом, добавленный в первой предварительной версии Ruby 2.7 в качестве экспериментальной функциональности. IDE распознает новый синтаксис и помогает вам перемещаться между объектами, находить их вхождения и переименовывать их.
Новая версия RubyMine распознает синтаксис нумерованных параметров и может отображать и находить их вхождения. Нумерованные параметры также являются частью экспериментальной функциональности Ruby 2.7 и позволяют передавать параметры в блоки, используя номер параметра в качестве его имени по умолчанию, вместо того чтобы определять переменную блока.
RubyMine 2019.2 поддерживает Action Mailbox, который будет включен в Rails 6. IDE поддерживает автодополнение методов маршрутизации и callback-функций, а также переход между их реализациями и обращениями к ним.
Мы также добавили пару инспекций, которые сообщат вам, если вы забудете добавить вызов routing в ApplicationMailbox или метод process в mailbox. Вторая инспекция также позволяет добавить недостающий метод с помощью быстрого исправления (Alt+Enter).
Подробнее об использовании Action Mailbox вы можете узнать в этом выпуске GoRails.

Добавлена полноценная поддержка анализа кода для ActiveRecord::Enum. Она включает в себя автодополнение, навигацию, а также поиск вхождений для имен значений типа enum и их методов. Также поддерживаются отрицающие области поиска (negative scopes) для значений типа enum, добавленные в Rails 6.
Мы постепенно улучшаем поддержку YARD, чтобы позволить вам создавать и управлять YARD-тегами, а также использовать в RubyMine улучшенное дополнение кода на основе YARD-аннотаций. В новой версии реализована поддержка аннотации типов и инспекций для тегов @overload и @yieldparam.
Подробнее о возможностях и недавних улучшениях в RubyMine, связанных с YARD, можно узнать в статье Поддержка YARD в RubyMine.
В версии 2019.2 можно переименовывать (Shift+F6) фабрики, последовательности и типажи (traits). IDE найдет их определения и предложит переименовать их, а также переименовать все их вхождения и сам файл, если его имя совпадает с названием фабрики.
Кроме того, мы добавили отображение фабрик, последовательностей и типажей на панели File Structure (Cmd/Alt+F7) и в одноименном всплывающем окне (Cmd/Ctrl + F12), а также реализовали возможность их безопасного удаления (Refactor | Safe Delete).
Новый интеншен Propagate to destructuring (Alt-Enter) позволяет заменять избыточные переменные еще одной деструктуризацией, если это возможно. Чтобы полностью убрать деструктуризацию, используйте интеншен Replace destructuring with property or index access.
Теперь, когда вы переименовываете идентификатор в файле JavaScript или TypeScript, IDE группирует динамические вхождения отдельно от остальных вхождений и по умолчанию исключает их из рефакторинга. Это позволяет проводить рефакторинг с большей точностью и дает вам возможность лучше контролировать переименование с помощью окна Refactoring Preview.
Автодополнение кода для компонентов и свойств компонентов, входящих в Vuetify, BootstrapVue, Quasar и некоторые другие библиотеки компонентов Vue, стало более точным. Это стало возможным благодаря новому подходу к работе с библиотеками Vue-компонентов, который мы реализовали в IDE.
Новая инспекция Duplicate code fragment в реальном времени проверяет ваш код и немедленно подсвечивает в редакторе потенциально дублирующиеся участки. Инспекция работает для кода на JavaScript, TypeScript, CSS, Sass, SCSS и Less.
Узнайте, что нового в WebStorm, — по ссылке вы найдете подробную информацию об улучшениях для JavaScript в RubyMine 2019.2.
В версии 2019.2 появилась возможность поддерживать разный стиль кода в разных частях проекта путем добавления нескольких файлов .editorconfig. В дополнение к стандартным параметрам EditorConfig, которые давно поддерживаются в RubyMine, теперь вы можете использовать специальные свойства, которые охватывают все параметры стиля кода, доступные в IDE.
В новой версии реализована поддержка скриптов командных оболочек. В нее входит автодополнение слов и путей, быстрый доступ к документации, переименование идентификаторов в коде для файлов .sh и .bash и даже поддержка конфигураций запуска скриптов командных оболочек. В IDE также доступна интеграция с ShellCheck для проверки кода и shfmt для его форматирования.
Теперь 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.
В RubyMine добавлена поддержка docker-compose exec. Эта команда позволяет запускать и отлаживать приложения, устанавливать гемы и выполнять другие задачи быстрее, чем раньше.
Подробности смотрите в статье Работа с Docker/Docker Compose в RubyMine.
В разделе экспериментальной функциональности вы можете включить ruby.docker.internal.via.exec для ускорения RubyMine при работе с Docker SDK.
Теперь вы можете добавлять гемы, запускать задачи Rake и команды Rails, а также выполнять другие операции без пересборки Docker-образов.
В RubyMine появилось новое всплывающее окно Recent Locations для удобной навигации по кодовой базе. Всплывающее окно поможет быстро перейти к нужному вам коду, если вы помните его примерное содержание, но не помните, где он находился. Начните набирать текст, чтобы отфильтровать результаты, и перейдите к нужному вам коду.
Подробности смотрите в статье Навигация в RubyMine: всплывающее окно Recent Locations.
RubyMine 2019.1 интегрируется с rbspy и предоставляет встроенный профилировщик, который поможет найти код, замедляющий тестирование или работу вашего приложения.
Узнайте, как пользоваться профилировщиком в нашем блоге.
Профилировщик можно подключить к запущенному приложению (Find action / Attach Profiler to Process) и исследовать его в реальном времени.

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


Мы также включили фабрики во всплывающее окно Related files (Navigate / Related symbol) и добавили новую иконку на поле редактора, позволяющую перейти к частичным объявлениям фабрик (при наличии).
С помощью нового действия Call Hierarchy можно просмотреть все методы, прямо или опосредованно вызывающие исследуемый вами метод, без ограничений в количестве посредников.
Все подробности читайте в нашем блоге.
В RubyMine 2019.1 появилась поддержка TruffleRuby! Чтобы переключить текущий Ruby SDK на TruffleRuby, убедитесь, что интерпретатор установлен, и выберите его в настройках Ruby SDK.
Кстати, в этом релизе мы также исправили многие проблемы с менеджерами версий Ruby.
Мы улучшили поддержку TypeScript в Vue-приложениях: RubyMine теперь использует языковой сервис TypeScript. Это обеспечивает более точную типизацию и информацию о типах, возможность использовать быстрые исправления, предоставляемые языковым сервисом, и возможность просматривать все ошибки TypeScript, обнаруженные в текущем файле, в инструментальном окне TypeScript.
Во время тестирования с помощью Jest, Karma, Mocha или Protractor теперь можно прямо в редакторе увидеть, какая строка вызвала неудачное завершение теста. Используя информацию из трассировки стека, IDE подсветит код, который вызвал ошибку. При наведении курсора на подсвеченный код вы увидите сообщение об ошибке и сможете немедленно начать отладку теста.
Встречайте полностью обновленную интерактивную консоль отладчика в инструментальном окне Debug для JavaScript и Node.js! Консоль теперь отображает объекты в виде дерева, а также позволяет менять оформление сообщений с помощью CSS и группировать их, используя методы console.group() и console.groupEnd(). Кроме того, сообщения можно отфильтровать по типу.
Теперь при добавлении новых скриптов в файл package.json RubyMine предлагает варианты доступных команд, предоставляемых установленными пакетами. Введите «node», и IDE предложит имена папок и файлов. Наберите «npm run», и вы увидите список задач, определенных в текущем файле.
Узнайте, что нового в WebStorm, — по ссылке вы найдете подробную информацию об улучшениях для JavaScript в RubyMine 2019.1.
Документация (F1) теперь содержит актуальные описания CSS-свойств, HTML-тегов и атрибутов с сайта MDN и информацию об их поддержке в браузерах, а также содержит ссылки на соответствующие статьи.
В RubyMine появилась поддержка разных тем интерфейса, доступных в виде плагинов. Вы можете попробовать темную фиолетовую, светло-серую или бирюзовую тему, а также создать тему самостоятельно.
RubyMine 2019.1 включает в себя новую функциональность, разработанную командой DataGrip:
В RubyMine улучшена поддержка областей поиска (scopes) Rails. Например, при добавлении в область поиска объекта связи RubyMine автоматически предложит доступные поисковые методы. Вам также доступно автодополнение кода и навигация для цепочек областей доступа.
В RubyMine добавлена полноценная поддержка Struct. Теперь для классов Struct доступны автодополнение, навигация и рефакторинги, так же как и для любых других Ruby-классов и их экземпляров.
RubyMine теперь предупреждает о вызовах методов у объектов, которые могут быть nil, и предлагает набор новых быстрых исправлений.
Новый диалог позволяет создавать переводы для всех существующих словарей за раз. Как и всегда, поместите курсор на строку, нажмите Alt+Enter и выберите действие I18nize hard-coded string. После генерации, удерживайте Cmd/Ctrl и кликните по созданному ключу, чтобы перейти к любому существующему переводу.
Если задать область имен или «ленивый» путь к ключу, то можно быстро создавать соответствующие ключи и переводы в локалях.
В RubyMine вы можете просмотреть перевод вместо ключа: просто нажмите Cmd/Ctrl на любом ключе в контроллере или файле представления. Более того, вы можете выбрать, какой словарь следует использовать для предварительного просмотра перевода.
Читайте подробнее об интернационализации в RubyMine 2018.3 в нашем блоге.
В новом диалоговом окне Extract Parameter (Refactor | Refactor this | Extract Parameter) можно не только извлечь аргумент, но и задать для него значение по умолчанию, сделать его необязательным или передать в виде блока.
Мы улучшили рефакторинг Inline, чтобы избавляться от лишних методов и переменных было более безопасно. В частности, встраивание методов с аргументами и переменных с интерполяцией строк стало более надежным.
Наконец, мы добавили полезную возможность извлекать части строковых литералов в переменные и константы.
Читайте подробнее о возможностях рефакторинга в нашем блоге.
Благодаря новым intention-действиям код будет проще читать. Теперь можно применять законы де Моргана к логическим выражениям и преобразовывать блоки в методы. Просто установите курсор на проблемное место в коде и нажмите Alt+Enter, чтобы применить подходящее автоматическое исправление.
Узнайте подробнее о новых действиях в нашем блоге.
В RubyMine 2018.3 появились удобные иконки для тестовых методов. Они указывают на каждый тест, который можно запустить в файле, и позволяют запускать тесты гораздо быстрее, чем из контекстного меню.
Читайте подробнее о запуске тестов в RubyMine в нашем блоге.
Теперь с пулреквестами можно работать прямо в IDE. Выберите пункт View Pull Requests в меню VCS | Git, в новом окне вы увидите файлы и изменения, а также статус, автора пулреквеста и другую полезную информацию.
Все знакомые функции интеграции c Git, такие как обновление проекта, коммиты изменений, просмотр diff и разрешение конфликтов, теперь доступны и для подмодулей Git.
Тема Darcula стала более сдержанной и теперь лучше согласуется с цветовыми схемами, используемыми в других IDE JetBrains.
Если вам больше нравится предыдущий вариант Darcula, вы можете продолжать его использовать. Перейдите в Preferences / Settings | Editor | Color Scheme | Ruby, нажмите на значок шестеренки и выберите Transform current scheme to Darcula 2018.2.
Мы сделали диалог Search Everywhere (Shift+Shift) еще удобнее. Стало проще пользоваться и другими возможностями навигации: Go to Class, File, Symbol и Action. Чтобы переключаться между этими типами поиска, просто нажмите Tab.
В обновленном разделе плагинов (Preferences / Settings | Plugins) стало проще устанавливать, удалять и обновлять плагины, а также управлять ими. Теперь можно искать плагины по тегам и сортировать результаты поиска по имени, рейтингу, количеству скачиваний или обновлениям.
Работать с Angular-приложениями стало удобней: автодополнение и навигация для переменных, атрибутов и выражений в шаблонах работают намного точнее.
В React-приложениях автодополнение теперь предлагает все lifecycle-методы компонентов, а инспекция Unresolved variable предупредит вас, если используемый компонент не был определен в приложении.
Импорты в JavaScript-файлах теперь добавляются автоматически не только для символов, определенных в проекте, но и для символов из зависимостей проекта, если эти библиотеки были написаны как ES-модули или в них есть d.ts-файлы. если эти библиотеки были написаны как ES-модули или в них есть d.ts-файлы.
С помощью нового действия Extract ruleset (Alt-Enter) можно быстро переместить CSS-правила из существующего блока в новый.
В настройках форматирования для CSS теперь можно выбрать опцию использования пустых строк. Кроме того, можно включить сортировку CSS-свойств внутри блоков в алфавитном порядке или по другому принципу.
Узнайте, что нового в WebStorm — там вы найдете подробную информацию об улучшениях для JavaScript в RubyMine.
Новое действие Introduce reference помогает вводить именованные ссылки. IDE найдет все дубликаты ссылок в файле и предложит заменить их новым именем.
Кроме того, теперь можно зачеркивать текст и переключать размер заголовка. Новые действия вы найдете на панели инструментов.