RubyMine 2017.3 EAP4: Code Intelligence Improved

Posted on by Artem Sarkisov

Hi there,

RubyMine 2017.3 EAP 4 (build 173.2941.5) is now open and packed full of pleasant code intelligence and other improvements.

Code Intelligence Improvements

Download RubyMine 2017.3 EAP4

Code Intelligence Improvements

First of all, RubyMine is now better at mapping arguments declared and then given to a method. In particular, the IDE now correctly captures and counts keyword arguments:


Also, we have fixed a couple of incorrect inspections. For example, previously single-line if/then/else conditions could be in some cases inspected as multi-line ones, which led to incorrect suggestions to remove an excessive then:


While you won’t see this incorrect suggestion anymore, note that this particular piece of code could still be improved with our in-editor RuboCop autocorrections:

Likewise, we added a way to remove an excessive return in the case of an inline array (also available via RuboCop corrections), and fixed incorrectly identified “invalid” local variables for unused params.

So feel free to run inspections (Code | Run Inspection by Name) and apply proper quick-fixes for your whole project. To refresh your memory, here’s how you can quickly get rid of excessive return statements:


Another thing that used to misguide our users was the inability to run bundle actions due to its absence in the current SDK, which was unobvious. So now we added an option Install Bundler (Tools | Bundler) to make this process straightforward and avoid any misconceptions:


Moreover, you will notice that starting with this EAP the Double Quoted String inspection is OFF by default. But again, you’ll need to also exclude a similar offense in rubocop.yml so that RuboCop doesn’t bug you with the same.


Last month we introduced some debugger improvements, in particular a new Trace to_s evaluation option, which allows you to track time and memory limit during debugging (Preferences / Settings | Build, Execution, Deployment | Debugger):


It used to be that we set 10 megabytes as a default memory limit, which caused overhead and slowed the debugger down for some users. This is why starting from this EAP the memory limit is set to unlimited, meaning that now by default, RubyMine doesn’t track memory consumption during the serialization. Though, if you are debugging objects requiring lots of memory during to_s operations, we encourage you to set a memory limit in order to avoid potential debugger failures.

Download RubyMine 2017.3 EAP4

These are almost all the improvements made for this EAP, but you are welcome to check out the rest in our release notes.

As usual, please report your issues to our bug tracker.

Your RubyMine team


Subscribe for updates