What’s New in RubyMine 2022.1

Support for new Ruby and RBS language features, new inspections and quick-fixes, UX improvements, and more.

Ruby

Support for new language features

RubyMine 2022.1 adds support for new Ruby and RBS features introduced in Ruby 3.1. This includes support for bounded generics, RBS collection, anonymous block argument forwarding, generic type aliases, and more.

New inspections

This version adds several new inspections which check the usage of type variables in RBS. They report missing type signatures, invalid type argument usage, conflicting type variable variances, incorrect type argument variance, and more.

Overloads in Quick Documentation

RubyMine can now show overloads in the Quick Documentation look-up (Ctrl+Q). When you invoke Quick Documentation on a method, it will show the current matching overload.

Inlay hints for Ruby methods based on RBS

RubyMine now shows inlay hints for Ruby code, based on type signatures from corresponding RBS files. Clicking on a hint will take you to the corresponding type signature.

A quick-fix for mismatched type signatures

RubyMine reports inferred types in Ruby code that don’t match the expected type from RBS. Starting with v2022.1, you can quickly navigate to the corresponding RBS file in such cases.

Improved autocompletion for the YARD @overload tag

RubyMine understands the @overload tag and will suggest all of the declared overloads when showing parameter information. Starting with this version, autocompletion for the @overload tag adds the name of a method that you are describing.

User Experience

Redesigned New Project dialog

We reworked the New Project dialog interface to streamline new project creation for both newcomers and experienced users.

Support for new Rails 7 generate options

This build adds support for the new JavaScript framework options for project generation that were added in Rails 7. You can now select them when creating a new project using the New Project dialog.

The new Notifications tool window

We’ve replaced the Event Log with a new Notifications tool window. This will help you maintain a better overview of notifications from the IDE so you don’t miss anything important. All notifications that appear in the tool window are now divided into two categories: Suggestions and Timeline.

Updated Open File or Project dialog

We’ve eliminated the tree from the Open File or Project dialog, which means that the IDE no longer calculates all intermediate directory nodes on opening. This change improves the IDE’s overall performance by preventing lasting hangs caused by dead-end path calculations.

Hidden tab labels in the debugger

To maximize the usable space in the Debugger tool window, we’ve hidden the tab labels by default.

Updated Structural Search and Replace dialog

We’ve redesigned the Structural Search and Replace dialog to feature a list of all templates to make it easier to navigate between them.

Editor

New formatting option to indent visibility modifiers

You can now set up indentation for visibility modifiers (public, protected, private) and the code inside them. You can find this setting under Preferences/Settings | Editor | Code Style | Ruby | Tabs and Indents and toggle the Indent visibility modifiers checkbox.

Code reformatting in LightEdit mode

LightEdit mode allows you to edit your files without creating or loading a whole project. You can now reformat your code while in LightEdit mode. To do this, press Ctrl+Alt+L or go to Code | Reformat Code in the main menu.

Run commands from Markdown files

We’ve added a new gutter icon for Markdown files, next to shell commands. Click on it to run a command in RubyMine’s built-in terminal. This can be useful when you follow manuals like README files, which often contain shell commands.

Copy code snippet for Markdown

You can now use the new Copy code snippet action to copy block contents to the clipboard.

More actions in the Markdown editor toolbar

New options for the floating toolbar will appear on text selection when you edit Markdown files. Using this toolbar, you can now quickly select header styles and create lists.

Tests

Navigation to shared contexts and examples in RSpec

You can now navigate from your specs to shared contexts and the shared examples used in them. To do so, Ctrl+click a statement that adds a shared resource: include_context, include_examples, it_behaves_like, or it_should_behave_like.

Docker

New Services view UI

We have significantly reworked Docker’s UI in the Services tool window. The makeover has been implemented for containers, images, networks, and volumes.

Docker Registry V2 support

We’ve added support for Docker Registry HTTP API V2 to use with Docker 1.6+. You can create simple or password-protected Docker V2 registries and perform all of the usual actions like viewing, pushing, and pulling images.

Version Control

Updated Annotate with Git Blame

We’ve improved the functionality of Annotate with Git Blame to make investigating introduced changes easier. RubyMine highlights the differences between the lines in the editor when you hover over an annotation, and you can open the Git Log tool window by clicking on the annotation.

Git File History: new UI without index

The new UI for the Git File History tool window is now independent of the indexing process. The data is represented with a new interface, even if the Log index is off.

Web and Frameworks

Better Next.js support

Thanks to the built-in support for React, all of the key features should have already been working in your Next.js projects. RubyMine 2022.1 adds support for some framework-specific things, such as pages. The IDE will resolve paths used in the href property of your Link components as well as in form and other tags. Code completion, navigation, and refactorings work now, too.

Support for Volta

In this release, we’ve added proper integration with Volta, a JavaScript tool manager. RubyMine will automatically recognize Yarn and npm installed using Volta.

Other Improvements

  • To facilitate navigation in the Log tab, the screen reader now reads the names and descriptions of the branches’ trees.
  • The accessibility support for macOS users has been improved. We’ve resolved the VoiceOver issue that was causing multiple unnecessary repetitions of list elements. Additionally, VoiceOver can now read combo box lists, and we’ve fixed the incorrect positioning of the VoiceOver cursor when working on an external display.
  • It is now easier to work with suggested changes. We’ve added the ability to apply or commit changes locally right in the IDE.
  • When working with databases, you can now select multiple tables and copy them to another schema.
  • We’ve introduced a new intention for working with database queries: Convert To Subquery. Now there is no need to even select a query – simply press Alt+Enter | Convert To Subquery.
  • We’ve added support for resolve logic for RBS superclasses, which has been updated to make it consistent with Ruby: RUBY-29164.
  • We’ve removed support for Rails 3.
  • The extend keyword adds methods to a singleton class, and it shouldn't have access to type variables. RubyMine now shows an error when one tries to use type variables with extend: RUBY-29099.
  • We’ve updated the Commit Details pane in the Git tool window. Now it includes information about GPG signatures and build status. Previously, this data was shown only as a column in the Git Log.
  • We’ve added support for Corepack, an experimental Node.js tool that lets you use Yarn and pnpm without having to install them. If you want to give it a try, make sure you run corepack enable in the built-in terminal – the feature isn’t turned on by default.
  • Tailwind CSS completion now works in FreeMarker templates.
  • We’ve removed the HTML4 and XHTML file templates, as they weren’t widely used.
  • Webpack coding assistance now works with ES modules in your webpack.config.js files.
  • The command-line formatter now supports a dry run mode for validating project files.
  • You can now configure split tabs to have the same width. For this, tick the new Equalize proportions in nested splits option in Preferences / Settings | Advanced Settings.
  • It’s now possible to export UML diagrams as yEd .graphml, JGraph .drawio, Graphviz .dot, Graphviz .dot with positions, Mermaid .md, Plantuml, and IDEA .uml files, which makes them compatible with third-party tools. To export, use the corresponding action from the context menu available on right-click.