What's new in RubyMine

2019.3 (Nov 28)

RubyMine 2019.3 adds better code insight, improves the debugger, and incorporates many platform improvements for Git, JavaScript, and HTTP client. Check out all the new things below and update today. We also encourage you to let us know of any issues and join the RubyMine Slack!

RuboCop

RuboCop

Severities mapping

Previously, RubyMine used predefined logic for mapping RuboCop and IDE inspection severities. Now, you can change the default mapping to increase or decrease severities for specific RuboCop offenses. Read this RuboCop help topic to learn more.

Code insight

Better code insight for Struct

Better code insight for Struct

Thanks to improved code insight for structure types, you can now find usages of the required structure type and navigate back to its declaration. To learn more about the other Find usages improvements, read this blog post.

Type support for fixture calls

Type support for fixture calls

The new version of RubyMine provides improved code insight for fixture calls in Minitest/Test::Unit tests. The editor now offers autocompletion for such calls and can navigate you to the related database fields.

Rails

Run Rails tasks with Run Anything

Run Rails tasks with Run Anything

Before v2019.3, Rails generators and Rake tasks could be run via dedicated popups. Now, you can use Run anything as a single entry point for running tasks/generators. For example, pressing ⌥R / Ctrl+Alt+R invokes the Run Anything popup and adds the rake command automatically. Learn more in this blog post.

Stimulus and Elm for new Rails projects

Stimulus and Elm for new Rails projects

With 2019.3, you can specify Stimulus or Elm as the JavaScript library for new Rails projects.

Debugger

Interactive debugging for the Rails console

Interactive debugging for the Rails console

RubyMine now allows you to examine your program’s state when debugging in the Rails console. To do this, just switch to the Interactive console tab after hitting a breakpoint.

YARD

Inferring types for @param and @return annotations

Inferring types for @param and @return annotations

We’re constantly improving our support for YARD to help you create and manage YARD tags. In v2019.3, RubyMine infers parameter and return types from the parent class for using it in the Add @param tag and Add @return tag intentions.

Read about YARD support for an overview of RubyMine’s YARD features.

Code Style

Aligning method chains

Aligning method chains

With v2019.3, we’ve added a new code style option which allows you to align chained method calls in different ways – by the initial receiver or leading dots. To configure this option, open Settings/Preferences | Editor | Code Style | Ruby | Wrapping and Braces and go to the Chained method calls group.

Copyright

Copyright notices for Ruby files

Copyright notices for Ruby files

Now you can quickly add a predefined copyright notice to Ruby files. For more details, see this Copyright help topic.

JavaScript/CSS

Complete CSS classes added using CDN

Complete CSS classes added using CDN

If you’re using Twitter Bootstrap or another CSS library in your project and you have it linked from a CDN in your view file, you can now get completion for the class names from this library, without adding its sources to the project.

Quote style settings for CSS

Quote style settings for CSS

You can now choose whether double or single quotes should be used in CSS (as well as SCSS and Less files) using the new Quote Marks option. If you select Enforce on Reformat, the selected quote style will be applied when reformatting code (and not only when using code completion to add new code).

Support for Vue.js components from separate files

Support for Vue.js components from separate files

RubyMine can now understand the link between different parts of the component located in separate files, and provide proper code completion for props, data, and methods.

Git

Reworked Clone dialog

Reworked Clone dialog

We’ve improved the Clone dialog (VCS | Get from Version control). Now you can log in from this dialog, and the IDE will instantly preview the lists of all repositories grouped by accounts or organizations.

Push any branch

Push any branch

You can now push changes from any branch right from the Branches popup – select a branch and then use the Push action in the menu.

Database tools

Basic MongoDB support

Basic MongoDB support

RubyMine 2019.3 provides initial support for MongoDB. You can view collections and fields in the database explorer, run queries, and so on.

HTTP Client

Dynamic variables in .http files

Dynamic variables in .http files

With v2019.3, you can use dynamic variables in HTTP requests. These variables include $uuid, $timestamp, and $randomInt. Use double curly braces to insert one of these variables where needed.

Run all requests in file

Run all requests in file

The HTTP Client now lets you write multiple requests in one .http file. This can be useful if you need to do request chains when one request depends on the results of the previous ones. Try the new capabilities using this sample app.

Other changes:

  • Discontinued support for the RubyMotion and Heroku Integration plugins
  • Sort lines alphabetically using the Edit | Sort Lines command
  • Search in a selected area when using the Find action
  • Improved plugin management without restarting the IDE
  • Better Docker terminal
  • Improved Kubernetes support
2019.2 (Jul 29)

Debugger

Debugger speed comparison v2019.1 v2019.2

Faster debugger

Our debugger used TracePoint :line to trace the program execution line by line. For v2019.2, we have designed a native extension for MRI that lets the debugger choose at which fragments of code the execution should be suspended, and free the rest of the code from overhead. As a result, we've been able to dramatically speed up the debugger and implement the new features below.

Smart Step Into

Smart Step Into

Previously, if you stumbled across a line with lots of methods in a debug session, RubyMine was only capable to step into the first method in a line. The newly added Smart Step Into lifts this restraint and allows you to step into and investigate every particular method or a block call located on the same line.

Block breakpoints

Block breakpoints

With the new version you can set breakpoints not only at lines but also at blocks. When you click the left gutter to set a breakpoint at a line that contains a block, RubyMine will ask if you want to set a breakpoint at a line, block, or both.

Read Debugging in RubyMine to learn in detail how to debug Ruby and Rails scripts in RubyMine.

Ruby 2.7

Pattern Matching

RubyMine 2019.2 supports Pattern Matching, which was introduced in the first preview of Ruby 2.7 as an experimental feature. The IDE identifies the new syntax and helps you navigate, find usages, and rename the objects.

More about Pattern Matching in Ruby

Numbered block parameters

Numbered block parameters

The new version of RubyMine recognizes the syntax of numbered parameters and shows/finds their usages. This is one more experimental feature of Ruby 2.7 which allows you to assign values in blocks using a parameter number as a default parameter, instead of defining a block variable.

Rails 6

Action Mailbox support

Action Mailbox

RubyMine 2019.2 supports Action Mailbox which will ship with Rails 6. The IDE suggests autocompleting routing methods and callbacks, and navigates between their implementations and usages.

Action Mailbox inspections

We’ve also added a couple of inspections that let you know if you’ve forgotten to add a routing call in ApplicationMailbox and a process method in your mailbox. The latter also offers a quick-fix.

Learn more about how to use Action Mailbox in this detailed GoRails episode.

Enum support

We've added proper code insight support for ActiveRecord::Enum. This includes code autocompletion, navigation, and finding usages for enums’ names and methods. Negative scopes for enums, introduced in Rails 6, are supported as well.

YARD

Improved YARD support

Improved YARD support

We’re gradually improving our support for YARD to help you create and manage YARD tags, and get better code autocompletion in RubyMine based on YARD annotations. The new version adds proper type annotation and inspections for @overload and @yieldparam tags.

Read YARD support in RubyMine for a detailed overview of RubyMine’s features and fresh improvements around YARD.

Factory Bot

Rename factories

Rename factories

With v2019.2 you can rename (Shift+F6) factories, sequences, and traits. The IDE finds their definitions and suggests renaming it and all usages, as well as the file name if it matches the factory name.

We've also added factories, sequences, and traits to the File Structure view (Cmd/Alt+F7) and popup (Cmd/Ctrl + F12), and added the ability to safely delete them (Refactor | Safe Delete).

JavaScript

Destructuring intentions

New intention actions

The new Propagate to destructuring intention (Alt-Enter) allows you to replace an extra variable if possible with another destructuring. To remove a destructuring completely, use the intention action called Replace destructuring with property or index access.

Dynamic usages in Refactoring Preview

Improved Rename refactoring

When you rename a symbol in a JavaScript or TypeScript file, the IDE now groups together dynamic usages and, by default, excludes them from the refactoring. This makes the refactoring more accurate and gives you more control over what exactly should be renamed in the Refactoring Preview tool window.

Vuetify props

Better support for Vue.js component libraries

Code completion for components and their props from Vuetify, BootstrapVue, Quasar, and some other Vue component libraries is now more precise. This was made possible by a new approach we’ve adopted to working with these libraries in the IDE.

Duplicate code inspection

Searching for duplicate code

The new Duplicate code fragment inspection checks your code on the fly and immediately highlights potential duplicates in the editor. It works for JavaScript, TypeScript, CSS, Sass, SCSS, and Less.

See what's new in WebStorm for more of the JavaScript improvements available in RubyMine 2019.2.

Code style

Edit code style configurations

Improved EditorConfig support

With v2019.2 you can maintain different code styles in different parts of your projects by adding multiple .editorconfig files. In addition to the standard EditorConfig options, which have been supported for a long time, you can now use IDE-specific properties that cover all available IDE code style options.

Shell scripts

Shell script editing

Edit Shell scripts

The new version adds support for shell scripts. This includes code completion, quick documentation, textual rename for .sh and .bash files, and run configurations for shell scripts. The IDE also integrates with ShellCheck for linting and shfmt for formatting the code.

Git

.gitignore autocompletion

Autocompletion in .gitignore

In .gitignore files, the IDE now offers code completion suggestions for files and folders. Cmd/Ctrl-click on the name to jump to this file or folder in the Project tool window. You can also quickly add files to .gitignore from the Project view and Local Changes tab – right-click on it and select Add to .gitignore.

Database tools

Improvements in Database tools – Full-text search

Find data with Full-text Search

Now you can search for data in your databases even if you don’t know where it is located. Right-click the data source that you want to search through and select Full-text Search (Ctrl+Alt+Shift+F / Cmd+Alt+Shift+F). The results of your query will be filtered to show only those strings in which the data is found.

See what’s new in DataGrip for the other database improvements that are also available in RubyMine 2019.2.

Other improvements:

  • Standard gem support
  • Support for Action Text
  • Support for Cucumber 4
  • Minor UI improvements in the Version Control tool window
2019.1 (Apr 4)

Docker

Docker-compose exec

Rethink Docker with docker-compose exec

RubyMine adds support for
docker-compose exec. Simply put, this command when enabled allows you to run and debug applications, install gems and do other development tasks faster than before.

Read How to work with Docker/Docker Compose from RubyMine for details.

Experimental: Run with docker compose.

Speed RubyMine up

In Experimental features, enable ruby.docker.internal.via.exec to speed up RubyMine when you're working with a Docker SDK.

Now you can add gems, run rake tasks, rails commands and other things that update your environment, without rebuilding Docker images.

Recent locations

Recent locations

Recent locations popup

The new Recent Locations popup reinvents the way you navigate your codebase. This popup helps you find the actual code when you only remember what it was about, but don’t have any idea where you have seen it. Start typing to filter the results and jump to the code you need.

Read RubyMine Navigation: Recent Locations Popup for details.

Profiler

Create i18n translation

Profile applications

RubyMine 2019.1 integrates rbspy and provides a native profiler to help you discover parts of code that slow down your application and/or tests.

For a detailed tutorial, read Profile Ruby & Rails Apps With rbspy in RubyMine.

Attach profiler to running app

Attach to running apps

Note that you can attach the profiler (Find action / Attach Profiler to Process) to your running application and investigate it in real time!

Factory Bot

Autocomplete and navigate attributes

When you are adding a factory, RubyMine autocompletes its attributes and, if possible, their values too. For instance, for a Rails model factory, the IDE will autocomplete its fields with their content, and even associations. And of course you can navigate between the definitions and usages of those objects.

Complete factory creation methods in test files

Autocomplete and navigate methods

When you are writing tests, you can autocomplete and navigate to the definitions of factory creation methods, such as create, build, build_stubbed, and others.

Other cool features of Factory Bot, such as sequences, traits, and aliases are also fully supported.

Full MVC integration

We also added factories to the Related files popup (Navigate / Related symbol), and added a gutter that allows you to go to partial factory declarations if they exist.

Call Hierarchy

Call Hierarchy

Investigate method calls

The new Call Hierarchy action helps you dig into methods (“callers”) that use the method you are investigating, the methods that call these callers, and further as deep as you need.

For more information, refer to this blog post.

TruffleRuby

TruffleRuby

TruffleRuby support

RubyMine 2019.1 adds support for TruffleRuby! To switch your current Ruby SDK to TruffleRuby, make sure you have the interpreter installed, and choose it in the Ruby SDK settings.

By the way, in this release we also fixed many issues with Ruby version managers.

JavaScript

TypeScript in Vue

Improved support for TypeScript in Vue apps

RubyMine now uses the TypeScript language service together with its own TypeScript support for any TypeScript code in .vue files. This means that you’ll now get more accurate type checking and type info, you will be able to use the quick-fixes provided by the service, and see all the TypeScript errors in the current file in the TypeScript tool window.

Highlight errors in tests

Highlighting for failed line in test

When you run tests with Jest, Karma, Mocha, or Protractor and some tests fail, you can now see right in the editor where the problem happened. The IDE will use the information from the stack trace and highlight the failed code. On hover, you’ll see the error message from the test runner and you can immediately start debugging the test.

New debugger console

New debugger console

Meet the new, improved interactive debugger console in the JavaScript and Node.js debug tool windows! It now displays objects using a tree view, and it supports styling of log messages with CSS and grouping them using console.group() and console.groupEnd(). You can also filter out any type of log messages.

New debugger console

Completion for npm scripts

When adding new scripts to the package.json file, the IDE now provides suggestions for available commands provided by the installed packages. After typing node, the IDE will suggest folder and file names. And after typing npm run, you’ll see a list of tasks defined in the current file.

See what's new in WebStorm for more of the JavaScript improvements available in RubyMine 2019.1.

HTML & CSS

HTML and CSS

Updated documentation

The documentation (F1) for CSS properties and HTML tags and attributes now shows up-to-date descriptions and information about the browser support from MDN as well as links to the full MDN articles.

Custom themes

Custom themes

New UI themes

You can now use the new colorful UI themes in RubyMine that are available as plugins. Choose between the Dark Purple, Gray, and Cyan Light themes, or create your own.

Database tools

Improvements in Database tools – New Sources

The database tools in RubyMine have got some cool improvements thanks to our colleagues on the DataGrip team:

  • Support for new databases: Greenplum, Vertica, and Apache Hive
  • Code completion supports combined statements for CREATE and DROP
  • Support for DEFINER attributes in MySQL and MariaDB
  • Support for the Oracle mode in MariaDB
  • You can now set the default folder for a project

Other improvements:

  • Ability to run and debug tests with Spring
  • Polymorphic associations: supported source and source_type params
  • Specify alternative gemfiles using bundle.config
  • Specify local gems path using bundle.config
  • I18n: support for default option
  • Improved support for query field methods in Rails models