What’s New in RubyMine 2021.3

Bundled RBS type signatures, new inspections for type checking and RBS files, support for remote development workflows, UX improvements, and more.

Ruby and RBS

Bundled RBS type signatures

This version comes bundled with RBS signatures. With the RBS signatures present, RubyMine is able to provide improved code assistance, such as real-time type checking, more precise navigation, search and refactoring, and more.

New inspections for RBS files

In this release, we’ve added 12 new inspections for RBS files. RubyMine will check RBS code for style issues, unused entities, inheritance issues, mismatches in partial declarations, and so on.

RubyMine’s built-in spell checker now also works for RBS files.

Parameter info based on RBS

The Parameter Info pop-up (Ctrl+P) displays the names and types of method parameters. It can now use type information from the corresponding RBS signatures (if they are present).

Copyright for RBS files

Your project may contain RBS files that you want to protect by copyright. Instead of adding a copyright notice to each file separately, you can now automatically add copyright information to the beginning of RBS files.

Run RuboCop on save

You can now configure RuboCop to reformat files every time one is changed, and the changes are saved automatically or manually. To enable this feature, search for rubocop in Preferences / Settings and select the Run ‘rubocop -a’ on save checkbox.

Type Checking

More inspections for RBS-based type checking

We’ve added a number of new inspections for detecting mismatches between assigned values and expected types taken from RBS.

These inspections check the types of constants, instance and class variables, method and block parameters, return values, arguments passed to yield calls, and global variables. You can find them under Preferences / Settings | Editor | Inspections | Ruby.

Initial support for Sorbet

RubyMine now recognizes Sorbet type signatures, including ones from .rbi files. Type mismatch inspections for method arguments and return values can now work based on Sorbet.

You can navigate between corresponding Ruby and RBI files using the Go To | Type Signature / Associated Declaration actions from the context menu. You can also use the Ctrl+Alt+Home shortcut.

Remote Development

Support for remote development workflows

RubyMine now supports an early version of the remote development workflow. It allows you to connect, from anywhere in the world, to a remote machine running a RubyMine backend. All the processing will happen on that powerful remote machine and you'll be able to work on the project as seamlessly as if it were on your local machine.

User Experience

Performance improvements

In this release, we’ve been working on performance improvements for the code editor. Actions like opening files, typing, invoking code completion, and applying quick-fixes now work faster.

This is only slightly noticeable on average-sized project files, but it is much more apparent when working with large files (2,000 lines of code or more).

Bookmarks tool window

In this version, we have reworked the functionality of bookmarks. You can create bookmarks with custom names and group them into nodes. All bookmarks are now located under the new Bookmarks tool window (Alt+2).

Split the Run tool window

You can now split the Run tool window horizontally or vertically. This can be useful when you have several configurations running and want to see their results simultaneously.

Just drag and drop the desired tab to the highlighted area. You can drag the tab back to unsplit the tool window, or right-click the top pane and select Unsplit from the context menu.

Source preview for Show Usages

You can now turn on the source code preview in the Show Usages window (Ctrl+Alt+F7) by clicking the square icon.

VCS

Checkout and Rebase onto Current for remote branches

The Checkout and Rebase onto Current action allows you to check out the selected branch and rebase it on top of a branch that is currently checked out. Until now, this has only been available for local branches. Starting from this version, we’ve added the ability to apply this action to remote branches, as well.

New Changes tool window

Starting from this version, RubyMine will display commit data and the difference between commits in a separate Changes tool window located to the left of the editor.

To open the new tool window, go to the Log tab of your version control system, right-click a revision, and then pick Compare with local from the context menu.

New Push All up to Here action

We’ve added a new action that lets you push all the commits up to the one you have selected. This could come in useful when you have several commits that are ready to be shipped while others are still in progress.

Web and Frameworks

Improved code completion for HTML

We’ve improved the way code completion works in HTML files. Previously, completion suggestions in HTML files would only show up when you typed the < character. Starting with this version, you can also see completion suggestions for HTML files when you type a tag name or an abbreviation.

Update npm packages from the editor

You can now update npm packages to the latest version right from the editor. Open your package.json file, place the caret on the package version you want to update, press Alt+Enter, and then select Update ‘package name’ to the latest version.

HTTP client enhancements

We’ve added support for binary responses, gRPC requests, output redirection to a custom file or directory, support for text and JSON streams, and support for HTTP request identifiers.

Space

Merge requests and code reviews from the IDE

For projects located in Space, you can now create merge requests and code reviews right from the IDE. To call these actions, click the + icon on the top toolbar of the Code Reviews tool window.

Mark files as viewed

In code reviews, the files you haven’t reviewed yet will be marked with blue dots. This will help you make sure you don’t miss any changes in Space projects when performing code reviews.

The dots will disappear automatically after you open the marked items. If you want to review the changes later, you can select Mark as Not Viewed from the context menu.

Database tools

Database in the Version Control System

You can now generate a DDL data source from a real one, use the DDL data source to map the real one, and compare and synchronize them in either direction.

Aggregates

We’ve added the ability to display an Aggregate view for a range of cells. Just select the cell range you want to see the view for, then right click and select Show Aggregate View.

New database diff window

You can now use the new database diff window to compare two schemas or objects: just select them, and press Ctrl+D.

First row is header auto-detection

Starting from this version, when you open or import a CSV file, RubyMine automatically detects that the first row is the header and contains the names of the columns.

Other improvements

  • It’s now possible to use a screen reader to create projects (IDEA-185260).
  • Disabled the tool window widget pop-up (IDEA-278151) and the quick documentation pop-up (IDEA-274143) that used to appear on mouse hover.
  • Fixed an issue with calling the Go To Declaration or Usages pop-up (IDEA-272536).
  • Resolved several issues with voiceover focus (IDEA-273021).
  • Type checking, mismatched argument inspections, and the parameter info action now work for the super calls in overridden methods.
  • Added support for RBS rest parameters (aka variable length parameters) in between other parameters.
  • You can now navigate between overloaded methods in RBS files using new gutter icons.
  • When creating a new RBS file, you can use the :: symbol in a file name to create a file that contains the surrounding modules.
  • You can now use the Class#method format to find methods via Search | Symbols.
  • RubyMine now supports singleton instance variables and attributes, and it is able to provide type checking and hints for such cases.
  • Made the VCS settings structure clearer.
  • Fixed a bunch of issues related to mapping .js and .d.ts files and added gutter icons for navigating between them.
  • Added Node.js remote interpreter support for npm, ESLint, Mocha, and Jest.
  • Decreased the indexing time for JavaScript files by 20%.
  • You can now download remote ES6 modules from the editor: place the caret on the import path, then press Alt+Enter and select Download module.
  • The built-in terminal now supports the new ConPTY API on Windows. Using this as a backend for the terminal helps us address several problems that users have been having with the old implementation, which was based on winpty. It also adds support for 24-bit colors in the terminal.
  • In this version, we have added typeahead support for the built-in terminal. The terminal can now predict text modifications and will instantly display them in a slightly different font. This may be useful while working on a remote machine as the IDE is able to display the characters as fast as it would on a local machine, even despite latency.