What's New in RubyMine

2016.3 (Nov 30)

Debugger

Attach to local process

RubyMine's debugger is now capable of attaching to local Ruby processes started without debugger gems loaded on startup, whether they are being run from the IDE, a terminal or a custom pipeline. It automatically detects the Ruby version and gemset used to run the script, installs the needed gems and attaches to that process, stopping at your breakpoints.

Find more details on the blog

Remote Ruby

Faster gem downloading

Downloading remote interpreter gems could take a very long time to get everything needed. With RubyMine 2016.3 it is now ~80 times faster! Thanks to the integration with rsync that made it possible.

Find more details on the blog

Puppet

Smarter code completion

Code completion is now aware of the code element structure for all the main syntax elements: case, class, define, function, if, node, and unless.

Data type code completion works inside lists of parameters for classes, functions and resource types.

RubyMine now supports defining Puppet functions that are also available in code completion.

Find more details on the blog

Better navigation and refactoring

Go to Declaration, Find Usages, and the Rename refactoring are now aware of local and global scopes, which helps them work better for facts, functions, resource types and parameters.

Rename now works in-place, without any additional dialogs.

Find more details on the blog

MiniTest::Spec

Comprehensive support for MiniTest::Spec

With 2016.3 RubyMine starts distinguishing MiniTest from RSpec and Test::Unit, allowing you to launch MiniTest::Spec directly from your specs.

Just make sure to require 'minitest/reporters', and include RubyMineReporter in your array_spec.rb file, to take full advantage of this light and elegant spec-style testing.

User Interface

New gem management UI

Gemsets are the convenient way to deal with different gem environments for your apps. RubyMine has supported both RVM and rbenv gemsets for a while, but now with the new Ruby version and gem management UI, you can manage gems in a more straightforward way.

Find more details on the blog

New initial configuration dialog

When running for the first time, RubyMine now shows a nice dialog where you can choose your preferred color scheme and shortcut scheme, as well as enable or disable plugins as needed.

Flat icons

We've reworked the icons to achieve a flatter design. While it may look unusual at first, we believe the new icons feel sharper and less noisy.

JavaScript

Flow

Now, when you set JavaScript version to Flow, the IDE reports problems in the files annotated with // @flow on the fly.

Make sure you've specified the Flow installation path by going to Settings | Languages & Frameworks | JavaScript | Flow.

ECMAScript 6

Convert var to const/let – now the IDE reports all var declarations and helps replace them with let or const declarations, depending on value semantics.

Replace require() with import – for all require() calls, the IDE now provides a quick-fix that replaces them within import statements.

We've added better support for destructuring assignments. You can now easily jump to the definition from the destructuring assignment and see quick documentation and parameter info when using a function.

The Find Usages and Show Usages actions have been extended to support default-exported functions and classes.

TypeScript

When you rename a method that overrides or implements another method, the IDE now offers to rename the base method too. If you choose to rename the current method only, the IDE makes sure to rename all methods that override the current one.

Also, we've added a new inspection that warns you when an import statement can be shortened, and provides a quick-fix to do that.

Version Сontrol

Git & Mercurial Log improvements

Search speed has improved dramatically, particularly for the Text, Author and Path filters.

The UI is now much clearer, with more space and more readable commit messages and branch labels.

>

More efficient conflict resolution

Now, the IDE is capable of resolving simple conflicts automatically. When such a resolution is possible, the IDE shows a Resolve icon on the left side of the editor. Click the icon to have the conflict resolved by the IDE. To undo, press Ctrl+Z.

We've also added full syntax highlighting for non-local revisions in the Diff and Merge dialogs.

Finally, we’ve added line markers to the Merge dialog to indicate actual changes to the base revision.

Changes management

When deleting a local branch, you get a notification that lets you quickly undo it or delete the tracked remote branch as well.

Now you can undo your last committed change (that you haven't yet pushed) in one click via the Log's context menu.

The Commit Changes dialog allows you to sign-off your commit. This may be a requirement for getting patches into some projects (including the Linux kernel).

Managing Git remotes

We’ve added a way to manage Git remotes via VCS | Git | Remotes. Now you can add, edit and remove remotes for every repo in the project. Note that remotes may also be added in the Push dialog.

Database Tools

Data editing

Now you can edit multiple similar cells at once. Select several cells and start typing the value. If you need a cell editor (e.g. a Data Chooser), press Enter.

Changes made in the Table Editor are now stored locally and submitted in bulk viaCtrl+Enter.

Learn more about new database tools and features

More intelligent coding assistance

RubyMine 2016.3 brings more accurate code completion. When using JOIN USING for Postgres, it offers only the field names common for both tables. Also, the INSERT statement completion offers not only the list of all fields, but also the list of fields which have no default values.

IDE will also warn you if a variable or parameter is not used within its scope, or if there is a mismatching number of columns in queries used in set operators (UNION, INTERSECT and EXCEPT).

Now, when you access a schema or database not introspected by the IDE, RubyMine will provide a quick-fix for that.

Learn more about new database tools and features

Utilities & drivers

We've integrated the IDE with the mysqldump and pg_dump utilities.

Now the IDE helps you manage the version of the datasource driver and update it if needed. If you want to use a particular version of the driver, choose it in the driver's settings. Also, you can uncheck Use provided driver and use only files added to the Additional list.

Learn more about new database tools and features

Other improvements:

  • Improved Rails Project Tool Window interface: Mailers and their views are treated the same way as controllers.
  • Support for file renaming through Right click | Refactor | Rename, without search for usages.
  • Support for React Native.
2016.2 Jul 21

Ruby

Frozen objects inspection

Since String literals are going to be immutable in Ruby 3 and Ruby 2.3 has already added a new Frozen String Literal Pragma (# frozen_string_literal: true), we’ve added a new code inspection (Settings | Editor | Inspections | Ruby | Frozen object modification) that now highlights immutable strings as well as any other frozen objects when modified.

Rbenv gemsets

RubyMine has supported rbenv gemsets since version 8. Thanks to your feedback, we go on polishing this feature to make gemset management smoother. This version brings a new inspection with a quick-fix option (Alt+Enter) available for .rbenv-gemsets and .ruby-gemset files with — any nonexistent gemset is highlighted and can be created on the fly.

YAML

Language injection

If you use YAML to store code fragments – HTML, JavaScript, SQL or others – you’ll be glad to have a new and long-awaited language injection option (Alt+Enter) in your files. It makes possible language-specific code highlighting, completion, formatting, and more.

Testing with RSpec

New refactoring for let statements

Using let statement in RSpec tests is considered to be a good practice. The IDE now encourages you to use it with the new refactoring – you can extract a code fragment into a new let statement (Refactor | Extract | RSpect 'let'), and be sure the refactoring is safe and duplicate code fragments are replaced correctly.

Capybara support

Capybara is pretty standard for RSpec acceptance tests nowadays. With RubyMine 2016.2 you can run and debug not only whole feature specs, but single scenarios as well. The IDE behaves the same for both acceptance tests and your model and controller tests.

User Interface

Fonts with ligatures

We've added support for monospace font ligatures. To enable ligatures, go to Settings | Editor | Colors & Fonts | Font, choose a font that supports ligatures, e.g. FiraCode, Hasklig, Monoid or PragmataPro and select Enable font ligatures option.

Background images

Also, we’ve added a new action called Set Background Image. Give your IDE a custom look by choosing a background image for the editor and the IDE frame.

The action is available via Find Action and, for a selected image file, via the context menu for the Project tool window and Image Editor.

Inspection Results tool window

The Inspection Results tool window has been redesigned for better ergonomics: now the code location for each problem is displayed, along with controls to apply a quick-fix or suppress the inspection.

Notifications

We've reworked the way RubyMine displays notifications to make them even friendlier: the popups are now displayed in the right-hand bottom corner (next to the Event Log tool window icon), more compact, and grouped by the subsystem they came from.

JavaScript

ECMAScript 6

The IDE now helps convert callback functions to arrow functions when you click Alt+Enter on the function keyword. Also, it can convert arrow functions to shorthand arrow functions.

Postfix completion

In addition to the .var postfix template, added earlier, now you can use .let and .const templates. As you might guess, when you press Tab these expand into declarations with let and const keywords.

React

RubyMine can now provide code completion and resolve for component properties defined using propTypes. For React events the IDE will automatically add {} instead of "". Non-DOM attributes are no longer marked as unresolved, and similarly, component lifecycle methods are not marked as unused anymore.

Angular 2

We’ve added a collection of Live Templates for Angular 2. To use a template, type its abbreviation in the editor and then press Tab to expand it. Press Tab again to jump to the next edit location in the template.

Also, the Project Wizard now supports Angular CLI.

Npm, Grunt and Gulp

Now you can specify any Grunt, gulp or npm task as a Before launch task in a Run/Debug configuration.

HTML code style

Configure whether you want the IDE to add single, double or no quotes at all when autocompleting attributes in HTML and JSX.

TypeScript

The update brings support for TypeScript 2.0 features: optional class members, readonly property, never type, this function type, global module export declaration, resolve for type declarations in @types folder, path mappings based module resolution, and more. Also, try smarter support for enums.

Version Control

Log

The Log viewer for Git and Mercurial continues getting better: it now loads in the background; when you select several commits, you see all commit details; and Ctrl+L can be used for navigating to the Filter field.

Patches

Working with VCS patches has never been easier. Copy the patch to the clipboard, go to RubyMine – and the IDE will immediately suggest to apply it! Alternatively, just drag the patch file into the IDE, or use the Apply Patch action in the VCS menu.

Database Tools

A new dialog helps you to import CSV and TSV files to the database.

Now you can dump multiple tables and even the entire schema, which means that any data (not only result-sets) can be exported to CSV, JSON or a list of INSERT/UPDATE statements.

Language injections let you treat string literals as live code written in other languages (like XML, JSON, any SQL dialect or regular expressions).

Table Editor adds actions for resizing columns as well as completion for values in a column.

Other improvements:

  • Markdown plugin is now bundled with RubyMine.
  • A small enhancement for those who use many languages, IntelliJ-based IDEs including RubyMine now understand what you mean, even if you forgot to switch the language of input.
  • You can now drag images, JavaScript or CSS files into the HTML file in the editor to generate src, script or link tags for them.
  • When using React with TypeScript, components are now automatically imported.
  • We've added support for case-only renames in Git for Windows and macOS.
  • The Commit dialog shows unversioned files so you don’t forget to commit something important.
2016.1 Mar 31

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.

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.

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.

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