RubyMine 2017.3 EAP1 is Open: Better Performance, EPP Support, and Much More!
RubyMine 2017.3 EAP 1 (build 173.2099.29) is here kicking off a series of Early Access builds for the upcoming v2017.3 that should be out by the end of November. The first EAP has a gazillion improvements, so you may find the navigation useful:
Let’s now review everything in detail:
Investigating performance issues is the hardest part of our job as it all depends on the specific project environment, which we usually cannot investigate as the majority of our customers develop proprietary software. Still, based on your feedback and requests, we’ve got a better sense of direction and now our performance-improving attempts have started to pay off.
In our recent updates, the 2017.2 and 2017.3 builds, we have seen consistent improvement in the overall responsiveness of the IDE, which can be witnessed in massive Ruby/Rails apps (e.g. while using autocompletion, inspecting code, finding usages, or navigating to declarations).
However, to make the effect of the improvements completely obvious, one should give RubyMine a full load. To test our improvements, we’ve inspected all the code in Diaspora and TracksApp in the new EAP (Code | Inspect Code) and compared the results with the most stable version of the previous release version, RubyMine 2017.1.5, and the currently stable RubyMine 2017.2.3 that already contains some of the performance updates. Here’s what we’ve got:
As you can see on the graph, the new EAP clearly does the job faster: 1.5 times faster than the current stable build, and about 1.8–2.5 times faster compared to the previous major version!
If you develop a huge Ruby/Rails project and enjoy testing EAPs, please try this build and let us know if you can confirm our results.
Our users developing with Puppet will be glad to know that RubyMine now supports the EPP templating language. The IDE correctly identifies `.epp` files, recognizes the original EPP syntax, and autocompletes opening expression and parameter tags:
The templates resolution works as well, meaning that you can autocomplete a path to a template and navigate from a manifest to the template called:
Also, we have implemented a Refactor Rename action for variables and parameters:
And Find Usages for template files:
“Extract Method” Improved
The Extract Method dialog now allows you to choose whether to extract a method to a `public`, `protected`, or `private` section. If the chosen section doesn’t exist, RubyMine will create it and put the method right into the added section:
Renaming files from tabs
We added a handy option to rename files from tabs. It speaks for itself and needs no further explanation, but here’s what it looks like:
Note that starting from this EAP RubyMine runs RuboCop in the context of bundler if the `Gemfile` exists in the project root. If you don’t have `rubocop` in your `Gemfile`, but RuboCop inspections are active (Settings / Preferences | Inspections | Ruby | RuboCop) you will get the following message:
The message will be reworked in the next EAP build. For now though, simply add `gem ‘rubocop’` to your `Gemfile` and install it to get rid of the error message, and continue working with RuboCop like before.
As for improvements, now RubyMine can not only autocorrect the whole file with RuboCop, but also fix errors by a class offense, or even a cop department. You will discover the new options by calling Show Intention Actions (`Alt+Enter`):
Indenting private and protected methods
The long-awaited option to indent methods under `private` and `protected` is finally available in this build. You can find it in Preferences / Settings | Code Style | Ruby:
Adding spaces around any operators
Another neat improvement is the ability to configure spacing around assignment, range, conditional, relational, and other operators:
Continuous commenting on Enter
Now if you comment a line, RubyMine will automatically comment the next line when you press Enter. To remove the automatically inserted `#`, press Backspace:
As usual, we added this option upon request, but if you don’t like the new “autocommenting” behavior, go Help | Find Action | Registry, and uncheck `ruby.auto.prolong.comment` (just start typing to find it quickly).
- Reinstated the ability to indent `*.erb` files with two spaces
- Added an ability to fold multiline containers in the editor
- RubyMine can now suggest running `bundle install` based on the stacktrace messages
- Fixed markdown issues
- Other improvements and bug-fixes
Your comments on the new EAP are very welcome in the section below!
Your RubyMine team