What’s New in RubyMine

Welcome RubyMine 2016.1, the first update in the series of releases planned for 2016. It brings support for the latest Rails 5 and Ruby 2.3, better JavaScript and TypeScript, enhanced VCS and database tools.

Rails 5

Action Cable

First of all, the Rails channel generator is now available in RubyMine. When created, channels are shown in the Rails Project View with the list of methods.

Code completion is available inside a channel class. You can also navigate from a channel .coffee file to the corresponding channel class and its methods.

Renaming refactoring works fine for a channel as well as for channel method even being invoked from a .coffee file.

Rails API

If you use Rails only as a backend in your app, you might be glad that rails-api gem is now included into Rails 5. So, RubyMine now has a special option when creating a new application.

Please note that you can only choose Rails 5+ from the list. The Rails API application does not have views, so RubyMine will not show any view-related actions and icons.

ActiveRecord changes

Rails 5 brings a bunch of changes for ActiveRecord, and RubyMine adds code insight for all the new methods.

Rake commands

Rake commands are now united with Rails commands in Rails 5: the Tools | Run Rake Task… menu item remains unchanged, but invokes bin/rails commands now.

Rails Templates

When creating a new Rails app in RubyMine, you can now choose and clone one of the existing Rails examples.

The list of templates is sorted by popularity.

Ruby 2.3

New language level is detected and derived from the SDK.

Stubs for Ruby 2.3 are provided; newcomers like Array#dig are present in completion/resolving/documentation.

Safe navigation operator and squiggly heredocs are introduced.

JavaScript

ECMAScript 6 and TypeScript

The new refactorings include Create method, Extract method, Inline method and Introduce field.

The new intentions include Make class abstract, Make public/private and Remove modifier.

Any unused import statement is now highlighted. To remove all unused statements, call Optimize imports. Required import statements are added as you type.

Support for TypeScript has been updated to v1.8.

AngularJS 2

Code insight and navigation are available for directives, variables defined in templates, custom event handlers, paths in templateUrl and styleUrls fields, and many other situations.

Enjoy coding assistance for event and property bindings, which also works inside any data binding.

Also, the IDE now understands components defined using the new AngularJS 1.5 module.component() helper method.

Debugger

The JavaScript debugger for Chrome now makes lots of new things possible. Debug asynchronous client-side code and arrow functions in ECMAScript 6, and stop on the breakpoints set in Web workers.

Also, the IDE now allows you to debug an app’s main process in a built or packaged Electron application, by using Node.js run/debug configuration. You can also debug render process by using Chromium remote debug configuration.

JSON schema

Thanks to support for JSON Schema, a format for describing JSON files, RubyMine can now provide coding assistance for certain types of JSON files. You can add one of the schemas available in the project’s repository, or create your own schema and then map it to a specific JSON file in your project. Code completion for tsconfig.json, .eslintrc and .babelrc is now powered by JSON Schema.

YAML

RubyMine 2016.1 also brings a lot of improvements for YAML: handling spaces as tabs, supporting multiline scalars as value of property key features, and many bugfixes.

Speed Search

Show usages

We have improved speed search in the Show usages popup. Now, when you use it, the matches are highlighted for easier navigation.

Terminal

Now you can enjoy speed search even in the Terminal tool window.

Version Control

Git

Two new actions are available via the Branches popup: Checkout with Rebase and Rename. The Checkout Tag or Revision action is now applied to all repositories configured for the project. If you do an Interactive Rebase, RubyMine now automatically stashes and unstashes local changes and assists with resolving conflicts.

Git 2.5 introduced worktrees to simplify working with clones of a single repository: instead of making a repository clone you can create a lightweight worktree. Now RubyMine lets you work with those worktrees just like you do with regular repositories.

By-word changes highlighting

Merging and comparing revisions with Git and other VCS just got easier with the added by-word difference highlighting.

Now you can also disable inspections in the Diff Viewer to minimize distraction.

Compare revisions between branches

For Mercurial we've made it possible to compare revisions of a file between branches (previously possible only within a single branch).

Database Tools

PostgreSQL

RubyMine provides coding assistance the features added in PostgreSQL 9.5.

We've also added support for the PostgreSQL hstore ‘?’ operator.

Table and column comments

Table and column comments now can be added and modified from the Create/Modify Table dialog (if the database supports that).

SQL Server

Custom types in SQL Server (alias types and table types) are now introspected and available for completion.

Table truncation

Use this new action to remove all rows from selected tables.

Docker

There is now a separate tool window for Docker. We have also added support for Docker Machine.

The right-side panel now allows viewing logs as well as managing environment variables and port bindings.

The lists of containers and images are now separate and more readable.

Other improvements:

  • Improved support for TextMate bundles with an ability to add custom TextMate themes
  • New Convert string to template string intention in ECMAScript 6
  • Coding assistance for classes and ids in CSS
  • Support for Dart test package and more generate code options for Dart
  • Simplified configuration for debugging client-side JavaScript code built with Webpack
  • Run configurations can now be started while indexing is in progress
  • Support for right-to-left languages in the editor