RubyMine 2018.1 EAP is Open: Run Anything Action, Better Debugger, and More!
Hi there,
We are happy to announce that the Early Access Preview program for RubyMine 2018.1 is now open.
For our next release, which is planned for the end of March, we’ve been focusing on polishing and improving the editing and Code Insight capabilities. These changes will primarily cover go to definition, find usages, code completion, as well as accuracy and speed of other actions.
We are still working on the Code Insight core, but this RubyMine version already has some new tricks up its sleeve (and more to come!)
- Run Anything Action
- Inline diagrams in Markdown
- Debugger Improvements
- Navigation Bar
- Ruby Parsing improvements
- Future plans
Run Anything Action
RubyMine has a great number of helpful tools for running rake tasks, various rails server configurations, and generators. All these actions require different shortcuts and different kinds of configuration.
A couple of months ago, a discussion in our slack channel led to a feature request for providing a unified way to run completely different stuff in RubyMine. We already have the universal and easy to use search everywhere, and now we’ve created a similar kind of action for running and debugging stuff (where possible). Meet Run Anything:
The action combines all our run configuration types and tries to match the input with known actions. For example, typing `rake` will render a list of available rake actions in the suggestion list. Typing `install` will suggest running bundle install and so on. If the command does not match any actions provided by RubyMine, you can still run it right from the popup:
IMPORTANT NOTE: due to a bug, on OS X systems RubyMine has to be run from the terminal in order to be able to run several “unknown” commands like rvm, brew, and others.
As you know, RubyMine has a great built-in debugger, so you can seamlessly debug matched configurations right from the same popup. Hold the Shift button when selecting an existing configuration (or creating a new one) to debug the command:
As of EAP1, it is not possible to debug commands unknown to RubyMine. However, we are already polishing this capability, so stay tuned for more juicy cases which are to be delivered next week!
Inline Diagrams in Markdown
It is now possible to render UML diagrams and DOT right in the markdown documents [RUBY-19041].
Please make sure you have Graphviz installed to use this feature. This page describes the expected configuration on different OSs.
Debugger Improvements
Several important improvements and bugfixes come with this EAP build:
Multiprocess debugging
RubyMine now allows for proper debugging of multiprocess applications. By design, our debugger allows you to explore all the application processes, their threads, and variables during stepping. However, due to this bug, RubyMine had only been gaining control over the process where a breakpoint was hit. Now that it is fixed, you have proper control over the whole application.
Live variables refresh
Now RubyMine updates the variables lists after using an action which changes them, e.g. evaluating expressions or running stuff in the debugger console.
Native conditional breakpoints support
The conditional breakpoints are now implemented right on the interpreter side which means less communicating between the debugged process and IDE, and, hence, an increased running speed.
Exception breakpoints
For a long time, RubyMine has been capable of setting up exception breakpoints which suspend execution when a certain kind of Exception is raised. However, this feature has not really been discoverable. Now in the exceptions list dialog you can enable catching every exception raised:
To add some specific type of Exceptions to be considered, add a new one with a plus button:
Navigation Bar
Another important feature which has been made more visible is Navigation bar. Now it is enabled by default:
Ruby Parsing Improvements
We have unified parsing routines for arguments in method definitions and block calls. This has improved Code Insight features provided for block variables: for example, now a block passed as a parameter is properly resolved from the receiver block’s body, and the parameter inspections like “unused parameter” apply to them as well:
Future Plans
Our work is far from finished. If you are interested in our plans, you may skim through our roadmap in YouTrack. If you feel like sharing your ideas on our new features, feel free to comment on the issues you find interesting, or just ping us in the comments to this post.
Happy hacking,
Your RubyMine Team.