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

This entry was posted in Announcement, Better Code, Cutting Edge, Feature, Productivity, WhatsMining and tagged , , , , , . Bookmark the permalink.

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

  1. Gencer W. Genc says:

    “Continuous commenting on Enter”: Thank you for taking my request seriously!

  2. Eugene Piven says:

    For your EPP screenshot examples, I’d avoid using invalid code.

    As documentation states:

    The parameter tag is optional; if used, it must be the first content in a template. The parameter tag should always close with a right-trimmed delimiter (-%>) to avoid outputting a blank line. Literal text, line breaks, and non-comment tags cannot precede the template’s parameter tag. (Comment tags that precede a parameter tag must use the right-trimming tag to trim trailing whitespace.)

    Which means you can’t do this in EPP template:

    # template params

  3. Argh, thanks a lot, Eugene, I’ve just removed that. We are also working to make RubyMine detect such invalid cases. Thanks again.

Leave a Reply

Your email address will not be published. Required fields are marked *