RubyMine 2019.2 adds support for Rails 6 and Ruby 2.7, improves YARD support and the debugger, and incorporates many platform improvements. 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!
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
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.
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.
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.
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.
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.
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.
We've added proper code insight support for
ActiveRecord::Enum. This includes code
navigation, and finding usages for enums’ names and methods. Negative scopes for enums, introduced in
Rails 6, are supported as well.
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
Read YARD support in RubyMine for a detailed overview of RubyMine’s features and fresh improvements around YARD.
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).
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.
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.
With v2019.2 you can maintain different code styles in different parts of your projects by adding
.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
.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
.gitignore from the Project view and Local Changes tab – right-click
on it and select Add to .gitignore.
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.
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
Read How to work with Docker/Docker Compose from RubyMine for details.
In Experimental features, enable
ruby.docker.internal.via.exec to speed up RubyMine when you're working with a
Now you can add gems, run rake tasks, rails commands and other things that update your environment, without rebuilding Docker images.
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.
Note that you can attach the profiler (Find action / Attach Profiler to Process) to your running application and investigate it in real time!
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.
When you are writing tests, you can autocomplete and navigate to the definitions of factory
methods, such as
Other cool features of Factory Bot, such as sequences, traits, and aliases are also fully supported.
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.
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.
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.
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.
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.
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.
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.
The database tools in RubyMine have got some cool improvements thanks to our colleagues on the DataGrip team:
The IDE now understands Rails scopes much better. For example, when you add an association object to your scope, RubyMine will suggest available finder methods. You will also discover code autocompletion and navigation for chained scopes.
RubyMine adds full support for Struct. Now you can autocomplete, navigate, and refactor objects of Struct classes the same way you do with any other Ruby classes and their instances.
A new Nil dereference inspection will check your code for possible nil errors in the current context, like when you call a method on a variable that might be nil.
Use the new I18n dialog to create translations for all your dictionaries at once. Just like before, put the caret on a string, press Alt+Enter, and choose to i18nize it. Then, once generated, hold Cmd/Ctrl and click the created key to navigate to any existing translation.
You can also create translations for namespaced keys and lazy lookups with no extra effort, as the new version of RubyMine lets you create translations for such keys right from the editor.
RubyMine can show you actual translations instead of I18n keys – just press Cmd./Ctrl. on any key in a controller or a view file. You can even choose which dictionary should be used as a translation preview.
Read i18n features in RubyMine for other internationalization improvements made in v2018.3.
The new Extract Parameter dialog (Refactor | Refactor this | Extract Parameter) allows you not only to extract an argument, but also to provide a default value for it, make it optional, or pass it as a block.
We've improved the Inline refactoring to let you get rid of of excessive methods and variables more safely. In particular, inlining methods with arguments and variables with string interpolation is now much more robust.
Finally, we've added a very handy ability to extract parts of strings to variables and constants.
Read more about refactoring options in RubyMine Refactorings: Overview & Improvements.
New intention actions will help you make your code more readable. For example, you can now use the De Morgan's law intention to simplify ugly negations and extract block calls to methods. Just put your caret at a code smell and press Alt+Enter to apply an appropriate quick-fix.
Read about other new intentions in Intention Actions in RubyMine.
RubyMine 2018.3 also puts a handy gutter at each test method. These gutters are visual anchors that show you every particular test that can be run in a file. They also offer a faster way to run tests than the context menu does.
Read Running tests in RubyMine to learn about other handy testing features.
Now you can view GitHub pull requests right inside RubyMine. Go to VCS | Git | View Pull Requests to view the pull request’s description, labels, assignees, and the actual changes.
In addition, all the familiar features in the Git integration, such as update project, commit changes, view diff, and conflict resolution, now work with Git submodules.
The new Darcula theme gets rid of noisy colors, becomes easier on the eye, and better aligns with similar schemes designed for other programming languages in JetBrains IDEs.
The previous Darcula is still available, too. If you prefer to stay with it, go to Preferences / Settings | Editor | Color Scheme | Ruby, click on the gear icon, and choose Transform current scheme to Darcula 2018.2.
You will also discover the new, more convenient Search Everywhere dialog (Shift+Shift). It makes it easier to use all the other navigation dialogs – Go to Class, File, Symbol, and Action. Simply press Tab to switch between the search types.
The updated Plugins section (Preferences / Settings | Plugins) makes it easier to manage, install, uninstall, and update plugins. For example, now you can search for plugins by tags, and sort the results by downloads, name, rating, featured, or updates.
As you work with Angular, enjoy improved code autocompletion and navigation for variables, pipes, and async pipes and the template reference variables.
In React apps, code completion now suggests all component lifecycle methods. The Unresolved variable inspection warns you about the possibly undefined components.
The new Extract ruleset action (Alt-Enter) helps you quickly extract CSS declarations from one ruleset to a new, more specific one.
The code style for CSS and its preprocessors now has a configuration for the use of blank lines. Moreover, you can now sort the CSS properties inside blocks – alphabetically or in any custom order.
The new Introduce reference action helps you create references for inline links. The IDE will find all the link duplicates in the file suggest replacing them with the newly created reference.
In addition, you can now strikethrough text and toggle header size. Find these new actions in the toolbar.