Early Access Program Features News

RubyMine 2017.3 EAP1 is Open: Better Performance, EPP Support, and Much More!

Hi there,

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:

Better Performance
Embedded Puppet (EPP) Support
Refactoring
RuboCop improvements
Code style
Other improvements

Download RubyMine 2017.3 EAP1

Let’s now review everything in detail:

Better Performance

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:

better RubyMine performance

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.

Embedded Puppet (EPP) Support

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:

epp_autocompletion1

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:

epp_go_to_declaration1

Also, we have implemented a Refactor Rename action for variables and parameters:

epp_refactor_rename1

And Find Usages for template files:

epp_find_usages1

Refactoring

“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:

extract method to private rails ror rubymine

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:

rename files from tabs rubymine

RuboCop Improvements

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:

rubocop error rubymine

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`):

rubocop autocorrect options rubymine

Code Style

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:

indent private protected methods rubymine ruby on rails

Adding spaces around any operators

Another neat improvement is the ability to configure spacing around assignment, range, conditional, relational, and other operators:

add spacing around operators ruby rubymine

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:

comment ruby on rails rubymine

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).

Other Improvements

  • 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

Download RubyMine 2017.3 EAP1

See the release notes for the full list of improvements, and please use our bug tracker to report any issues you encounter.

Your comments on the new EAP are very welcome in the section below!

Cheers,

Your RubyMine team

image description