We managed to make the IDE faster, which is noticeable when working with large applications. For example, now checking all code for errors ( Code | Inspect Code ) takes much less time compared to RubyMine 2017.1 and 2017.2:
Users love RubyMine for the ability to quickly move to the definitions of methods and variables in the project and the gems used, and we are trying to improve this functionality. So, navigation to rail callbacks and responders in version 2017.3 has become much more reliable:
We’re seriously determined to improve basic Ruby and Rails support in later versions.
IDE recognizes caused parameters
And not only recognizes, but much better than before. RubyMine will tell you if the number of arguments passed does not match their original number in the declared method:
IDE has learned to recognize nested projects, correctly install dependencies and switch to them if necessary:
If your application is a mono-repository, try the new version and let us know if you encounter problems.
WSL support
If you have Windows, then do not pass by this feature. RubyMine learned to work with Windows Bash, which allows you to avoid painful Ruby settings on the “Windows”. Recipe:
Add WSL as a remote SDK in settings ( Preferences / Settings | Languages ​​& Frameworks | Ruby SDK and Gems | New remote ).
Forget that you are dealing with Windows.
Improved refactoring
RubyMine has a set of refactorings, allowing you to conveniently bring code in order. In particular, the Extract Method option helps to quickly put the code in a logical way in a separate method. Now this option can also immediately take out the code in the private or protected section. If the section is not yet in the file, then RubyMine will create it yourself:
RuboCop is now even cooler
In the previous release, we taught RubyMine how to apply RuboCop autocorrection for the entire file directly from the editor. Starting from version 2017.3, you can not only detect and correct all errors, but also fix only a specific cop department or offense class ( blog ). No plugins, everything works right out of the box!
At the same time, RubyMine takes into account the presence of .rubocop.yml and displays violations according to the settings:
By the way, we are also asked if the IDE can display custom user inspections. Able, and some users have already seen this:
More code style options
In the settings ( Preferences / Settings | Editor | Code style | Ruby ) you can now set indents for the private and protected sections. RubyMine will remember the selected settings and uses them when formatting the code in the editor ( Code | Reformat code ):
Also, now it is possible to choose which operators should be separated by spaces, and which ones should remain intact by the formatter:
Some of our users manage configurations and use Puppet. For them, implemented support for EmbeddedPuppet . In particular, added autocomplete and navigation to EPP templates and manifests:
And the IDE quickly finds all uses of templates in a project, and is able to conveniently rename variables and parameters in the entire application:
Debugger timeout
We added the Trace to_s evaluation option ( Preferences / Settings | Build, Execution, Deployment | Debugger ), when selected, the debugger will start throwing out timeout messages in case of overhead:
Timeout can be configured by time, but you can disable it altogether:
Interactive rebase of the latest changes in Git can now be launched directly from the log by clicking on the base commit:
When switching between branches, the IDE saves the state of the workspace: the location of the editor tabs, tool windows, etc.:
The Show Changes to Parents mode has been added to the guitar log. In this mode, the right panel in the log shows not only changes in files with conflicts, but also separately non-conflict changes for each branch participating in the merge:
REST client
From now on, you can work with REST requests using a new tool based on the editor. It is enough to create a file in the project with the .http permission and open it in the editor:
For Vue.js, code autocompletion and navigation for props, properties and methods, as well as a new collection of code templates appeared.
New refractorings Extract type alias and Extract interface for TypeScript.
Updated documentation and improved autocompletion for standard JavaScript methods and objects. Opening projects has become faster thanks to pre-built indexes for these methods.
Imports in JavaScript and TypeScript files are now automatically added when copying and pasting code from one file to another.
More details about the improvements can be found on the page What's new in WebStorm , as well as in the video:
Database
If you work with a large number of data sources (data sources), these data sources can now be organized into groups.
For convenience of working with numerical data in the table, they are now aligned to the right.
For PostgreSQL, the Database toolbar displays Users and Roles, and also supports Foreign Data Wrappers.
You can insert data into a table from Excel.
Multiple table values ​​can be compared with each other.
DDL export now supports more options and is available through Context menu |SQL Scripts |SQL Generator .
Autocompletions for JOIN have become smarter.
More information about the improvements in database tools can be found in the DataGrip blog (category 2017.3).
Important stuff
Other improvements include support for Ruby 2.5, Docker Compose v3, Gems.rb, Cucumber Expressions, and the ability to rename files from tabs.
Download the new version on the What's new page. If you are trying RubyMine for the first time, then the first month of use is at our expense (your credit card details will not be required).
Do not forget to report problems to the tracker , subscribe to our Twitter (in it you will find product announcements and useful tips & tricks), and also join our Slack !
PS Taking this opportunity, we will boast that a Ruby-Metap has recently been in JetBrains:
We are grateful to the organizers and speakers, and we also urge all Ruby and Rails developers who have not done this to join the Saint P Ruby User Group !