What’s New in RubyMine 2020.1

Improved navigation, smarter code assistance, easier creation of tests, new LightEdit mode, and many more new features for the debugger, Docker, version control, JS, and database tools.

Navigation

Navigation between Rails entities

Navigation between Rails entities

You can now navigate between Rails entities and a DB schema. To do so, press Ctrl+Alt+Home. To make navigation more seamless, we’ve also unified the look of the navigation popup and made it more compact.

Improved navigation between methods

Navigate | Go to Super Method (Ctrl+U) now allows you to select the exact super method you want to navigate to.

You can also search for usages (Alt+F7) of a super method.

Structure view navigation

Structure view navigation

In the Structure view (Ctrl+7), you can filter out the variables to see only the methods.

Ruby 2.7

Support for the latest Ruby syntax

Support for the latest Ruby syntax

As always, we support the latest Ruby version. This includes, for example, the new '_' syntax of numbered parameters. The IDE identifies the new syntax and helps you navigate, find usages, and rename the objects.

Running and debugging

Running Rake tasks from the gutter

Running Rake tasks from the gutter

Starting with v2020.1, you can run, debug, and profile your tasks right from the gutter menu. As always, RubyMine automatically creates corresponding run/debug configurations for the tasks that were run.

Smart execution of terminal commands

Smart execution of terminal commands

RubyMine's terminal can now parse various commands. Once an input command is matched, it is highlighted and you can press Ctrl-Enter to open a particular UI with the parameters fetched from the command.

To try this feature out, enable the terminal.shell.command.handling flag in the Experimental Features dialog.

Learn more

Pinning variables’ fields

Pinning variables’ fields

In the Variables view of the debugger, you can now pin variables’ fields to the top and see their values in the variable's representation.

Tests

Creating tests in a specific path

Creating tests in a specific path

RubyMine can now create a new test for any class, replicating the directory structure based on the path to the test subject.

Learn more

Code assistance

ML-assisted completion

ML-assisted completion

Using machine learning, RubyMine is now able to rank more relevant completion suggestions higher. Note that ML-assisted completion is a work in progress and we expect to make it even more helpful with time.

Docker

Docker Compose improvements

Docker Compose improvements

With RubyMine 2020.1, you can run, debug, and test your application in a particular environment by using Docker Compose as a remote interpreter. You can specify how commands such as which ruby, gem env, and rbconfig are run inside Docker.

Learn more

Code editor

LightEdit mode

LightEdit mode

The new LightEdit mode allows you to use RubyMine as a general-purpose text editor. It launches and works a lot faster than usual because it opens your files without loading a project.

Zen mode

Zen mode

Zen mode helps you focus on your code: it expands the IDE window and hides all the elements except the code editor. To try it quickly, press Ctrl+` and select View mode | Enter Zen Mode.

IDE configuration

Unified UI for SSH configuration

Unified UI for SSH configuration

There’s a new unified settings tab to manage your SSH configurations, located under Preferences/Settings | Tools | SSH Configurations. Use it to add, edit, store, and delete SSH configurations.

Learn more

More flexibility when sharing run configurations

More flexibility when sharing run configurations

In RubyMine 2020.1, you’ll get more control over your run configurations, as you can now store them in any project directory of your choice. To do this, select the new checkbox Store as project file and then specify the path to the directory where you want to store a file with the selected run configuration.

Learn more

Terminal

Split terminal sessions vertically/horizontally

Split terminal sessions vertically/horizontally

You can now split terminal sessions vertically or horizontally to run them side by side. Invoke the context menu from the terminal to create, navigate, and close a split terminal session.

Version control systems

New “Interactively Rebase from Here” dialog

New “Interactively Rebase from Here” dialog

We have recast Interactively Rebase from Here to make the dialog truly interactive. It allows you to edit, combine, and remove your previous commits, making your commit history more linear and comprehensible.

Learn more

Commit dialog / Commit tool window

Commit dialog / Commit tool window

RubyMine 2020.1 introduces the Commit tool window as an alternative to the Commit dialog. You can switch between them in Preferences / Settings | Version Control | Commit | Use non-modal commit interface.

The new tool window is located on the left, which leaves enough room for the editor to show the diff.

Learn more

Improved Branches popup

Improved Branches popup

The Branches popup includes several improvements:

  • Use an explicit search field to look for existing remote and local branches.
  • The Refresh button now updates the existing remote branches.
  • Incoming (blue) and outgoing (green) commit indicators have been added to the status bar.

Database tools

Query results in the editor

Query results in the editor

You can now see the results of your queries in the editor. This feature can be turned on and off with a new button on the toolbar or in Settings/Preferences | Database | General | Show output results in the editor. Choose how to view the data: as table, tree, or text.

Query results can also be exported to Excel.

Database scripts in run configurations

Database scripts in run configurations

You can now create Run configurations to run database scripts.

JavaScript/TypeScript

New smart intentions and inspections

New smart intentions and inspections

Use new smart intentions and inspections (Alt+Enter) to save yourself some time when coding! For example, you can now quickly convert the existing code to optional chaining and/or nullish coalescing, the syntax introduced in the latest versions of JavaScript and TypeScript.

More helpful quick documentation

More helpful quick documentation

For JavaScript and TypeScript, the Documentation popup now shows more useful information, including details about the type and visibility of the symbol as well as where that symbol is defined.

Vue.js: Vuex and Composition API support

Vue.js: Vuex and Composition API support

With out-of-the-box support for the Vuex library and the Composition API from the upcoming Vue 3, you can build great Vue.js applications even more smoothly.

Running Prettier on save

Running Prettier on save

With the new Run on save for files option, RubyMine will apply Prettier formatting to all files specified in the IDE settings and edited in the project as soon as you save those files – a file watcher or a third-party plugin is no longer needed.

Other changes

  • We are moving to JetBrains Runtime 11 (JBR11), and will no longer distribute builds with JetBrains Runtime 8 (JBR8). This includes all the 2020.1 updates, both in the IDE and in the JetBrains Toolbox App.
  • The light theme is unified for all operating systems and is now called IntelliJ Light.
  • RubyMine and other IntelliJ-based IDEs now use JetBrains Mono as their default font.
  • We’ve added a way to auto-import IDE settings.
  • If you don’t have Git installed, RubyMine will show you a notification and offer to download and install Git for you.
  • The Quick documentation popup appears on mouseover by default. You can disable this option in Settings/Preferences | Editor | General.
  • A new code inspection will now warn you about invalid private/protected method invocations.