what's new in rubymine

2017.3 (Nov 29)

RubyMine 2017.3 Release Candidate, the best and final update for RubyMine this year, is now available for your review! Check out the new features below and give it a try. Don't forget to share your feedback!

A better IDE

Better performance

Better performance

This release has significant performance improvements that the team have been working on the whole year. To put it in a nutshell, the IDE has become faster, which is especially easy to see when RubyMine works at full blast. Go to Code | Inspect Code to run it for your whole project and see for yourself.

Find more details on the blog

Better
                                 resolution

Better resolution

Navigate to Declaration, one of RubyMine's most beloved and used features, has become even better! We've eliminated bottlenecks that might have prevented you from jumping to external keywords like before_action callbacks. Update now to see the rest of the resolution improvements no other editor can offer.

Better Code Insight

Code Insight features have been significantly reworked. In particular, RubyMine has become much better at mapping declared method arguments with the given ones.

Not only that, some built-in Inspections and Intentions have been fixed, making the IDE even more robust.

Run v2017.3 and inspect any particular errors, and fix them in bulk across the whole project.

Find more details on the blog

Puppet

Embedded Puppet template syntax

DevOps is the future and Puppet doesn't rest on its laurels – nor does RubyMine! The new release brings support for the EPP template syntax.

Not only does the IDE now recognize the original EPP syntax, but it also correctly autocompletes and navigates from templates to manifests and back.

On top of that, Rename Refactoring works for variables and parameters, and you can Find Usages of your template files in seconds.

WSL

Windows subsystem for Linux

Linux subsystem for Windows

RubyMine 2017.3 features Windows Bash Support! We encourage our Windows users to try out WSL in RubyMine to get rid of any painful configs on Windows, and exploit the full power of the IDE.

Follow this tutorial to install WSL, and then add it as a remote SDK in RubyMine (Preferences / Settings | Languages & Frameworks | Ruby SDK and Gems | New remote).

Refactoring

Extract method to
                                      private

Extract methods to private and protected

Extracting methods with RubyMine is a piece of cake, but now it's even sweeter. With this release you can extract methods (Refactor | Extract) to a private, protected, or even public section if you want.

Find more details on the blog

RuboCop

Rubocop autocorrect
                                      options

Autocorrect by offense class or cop department

Starting from now, RubyMine's RuboCop in-editor autocorrections outperform any other alternative. With a simple Alt+Enter you can autocorrect the whole file or fix a specific cop department or an offense class.

Together with RubyMine's respect for your rubocop.yml configs, this makes the IDE your personal code style censor.

Find more details on the blog

Code style

Method indentation and spaces around operators

You asked us to add an ability to indent private and protected methods, and now you got it! Find these options in Editor | Code style | Ruby and reformat your methods' indentation the way you want (Code | Reformat code).

In addition, you can now choose which operators should be wrapped with space, and which kept as is. The formatter will follow your choice.

Find more details on the blog

Parameter
                            Name Hints

Parameter name hints improved

Parameter name hints have become much cannier: you can now configure them to be displayed for literals only, as well as turn them off for excessive cases, e.g. when the given arguments are self-explanatory.

Moreover, the new Show implicit param grouping option will wrap all the optional values into the improvised array for better visibility.

Find the new settings in Preferences / Settings | Editor | General | Appearance.

Find more details on the blog

Debugger

Trace to_s eval
                                               with the debugger

Trace to_s evaluation

The new Trace to_s evaluation option detects costly operations and throws a timeout message, saving you time during the debugging session.

Find it in Preferences / Settings | Build, Execution, Deployment | Debugger and check it out for yourself.

Other improvements:

2017.2 (Jul 18)

RubyMine 2017.2, the second major update for RubyMine this year, is now released! Check out the new features below and give it a try. Don't forget to share your feedback!

Docker Compose

Docker Compose

Docker Compose

RubyMine 2017.2 upgrades Docker support with Docker Compose! Open your Docker project in RubyMine, and set Docker Compose as a remote SDK (Preferences / Settings | Languages & Frameworks | Ruby SDK and Gems | New remote | Docker Compose). Now you can work with your multiple Docker containers taking advantage of the whole set of RubyMine features from code analysis and editing tools to debugging and testing suites!

Find more details on the blog

Debug with Docker Compose

Debugging applications

Moreover, with this release you can debug apps inside a docker-compose service using the powerful RubyMine debugger. You have configured Docker Compose in RubyMine. Now add gems ruby-debug-ide and debase to your Gemfile, install them with docker-compose build. Now set breakpoints where needed and start debugging Ruby or Rails apps inside your container!

Find more details on the blog

RuboCop

RuboCop quick-fixes

Quick-fixes for RuboCop

Our previous major release featured RuboCop inspections. This release enhances them with an ability to auto-correct the discovered code smells. Put a caret on a highlighted code, press Alt+Enter, and fix all bad code in the file with RuboCop.

Breadcrumbs

Ruby breadcrumbs

Breadcrumbs for Ruby

This release brings breadcrumbs for structure elements in Ruby: modules, classes, methods, blocks, and custom names for RSpec groups and examples. You will also discover breadcrumbs for JavaScript, as well as XML and HTML breadcrumbs redesigned in the same manner.

Find more details on the blog

JavaScript

JavaScript & TypeScript

The new Move Symbol refactoring allows you to safely move classes, global functions or variables in ES6 modules from one JavaScript or TypeScript file to another.

Coding assistance in JavaScript files now respects webpack module resolution. When you’re using a complex webpack configuration with aliases and multiple modules, the IDE will properly resolve paths in import statements and suggest symbols to import.

Code style

The new Arrangement and Blank lines code style options allow you to configure how different blocks of code such as fields and methods are ordered and separated. Call the Rearrange Code action or use it together with Reformat Code to make code more readable and consistent.

Also, you can now import some of the ESLint code style rules to the IDE’s JavaScript code style settings.

Improved Sass SCSS

Improved SASS and SCSS

For Sass and SCSS selectors created using &, you can now use code completion in HTML files and navigate to the definition.

For the nested selector, you can quickly jump to the definition with Cmd-click / Ctrl+click.

Version Control

Revert and reword commits

The Git Log features two new handy actions: Revert and Reword.

Revert allows you to remove any registered changes by adding a new commit. Read more

Reword provides a convenient way to reword your local commits. Read more

Format commit message

Format commit messages

The settings for the Commit dialog have been reworked and moved to the Commit Dialog page (Preferences / Settings | Version Control | Commit Dialog).

The new settings let you customize the rules applied to commit messages: a blank line between the subject and the body, and the maximum length. Also, now the IDE offers a quick fix and the Reformat action inside Commit Message.

Improved Shelf

Shelf

The Shelf tab has been reworked for better performance and ergonomics. Now it has a Preview panel and provides a new action to compare the “shelved” version of a file with its local version.

User Interface

Gutter in Find in Path

Find in Path

The Preview panel in Find in Path now has a Gutter – a left-side pane like the one in the editor – with line numbers, navigation icons, and local change markers.

Search results from the same lines are now merged together.

Other improvements:

  • Database improvements.
  • Debugging with Docker.
  • Added RuboCop inspections and quick-fixes to scratch files.
  • Fixed significant performance issues.
  • Added an ability to compare items with different deployed versions.
  • Patches can now be created to clipboard.
2017.1 (Mar 22)

Docker

Docker support

RubyMine 2017.1 brings full support for Docker! Download the Docker integration plugin right from the IDE, choose a remote Docker SDK, and enjoy working with your Docker projects like you do with local ones. Take advantage of code analysis, completion, and other smart features available in RubyMine.

Find more details on the blog

RVM Gemsets

Create gemsets quickly

Create RVM gemsets from the New Project wizard. When you create a new project, the IDE will automatically suggest a similarly-named gemset and will use your project gems within this gemset. In this way, RubyMine helps you keep gems for your projects separately, preventing each of your projects from possible damage.

Alternatively, RVM gemsets can be also created in the Ruby SDK and Gems dialog.

Find more details on the blog

RuboCop

RuboCop support

Starting with this version RubyMine supports RuboCop, the well-known static code analyzer for Ruby. The IDE runs cops in the background, and displays RuboCop offenses the same way as it does RubyMine inspections.

Find more details on the blog

Testing

Test generation for Rails entities

We have added an ability to create tests for Rails controllers, models, helpers, and mailers from the Go to test action. So if you have a Rails entity without a related test, RubyMine will suggest to install the testing framework (currently works with RSpec and Test::Unit) and generate the test. You can also roll back changes if something goes wrong.

Find more details on the blog

Puppet

Puppet module generation

Puppet modules can be now generated quickly right from the New Project wizard. The IDE automatically detects the gems needed for Puppet and then suggests installing the missing ones. If you are already working on an existing project in RubyMine, you can also create a new Puppet module in a second from the context menu.

As for other improvements, RubyMine now can install dependencies based on .fixtures.yml.

Find more details on the blog

Puppet project structure

The IDE finds all modules and/or environments in the project and updates the project structure with one click from the context menu. Open your Puppet project, Install dependencies through context menu, and enjoy working with your modules with all their dependencies accounted for.

Find more details on the blog

JavaScript

New code style options

Code style configuration for JavaScript and TypeScript is now a lot more flexible. You can configure the use of semicolons to terminate statements, trailing commas, quotes, and wrappings for ternary operators and variable declarations with a single var.

Vue.js support

Vue.js support is now available in RubyMine through the official JetBrains plugin (Settings | Plugins | Browse repositories). Enjoy coding assistance for Vue template language and the language of your choice in the script and style blocks of a .vue file. The IDE automatically completes Vue components and adds the required imports for them.

Auto import for React components

Select a React component defined in your application in the completion popup – and the IDE will add an import for it automatically. RubyMine will also suggest a fix in case you forget to import React.

Integration with Jest

Thanks to the WebStorm team, you can now run Jest tests in RubyMine, see test results in a handy treeview, easily navigate to the test source from there, and also debug Jest tests.

See other new features coming from WebStorm.

Version control

Search & display options

The Log viewer now supports regex and case-sensitive commit message search.

Now you can control how much information the Log viewer displays. For example, you can disable Show Tag Names to make the view more compact, or enable Compact Reference View to see only the first branch name and hide the others.

Also, if you are working with big projects with tons of commits, you will be glad to know that the search in Git Log has become significantly faster.

Other improvements:

  • Parameter hints for Ruby. Find more on the blog.
  • Updated structure view of markdown files. Find more on the blog.
  • New Find in Path dialog shows search results instantly. Find more on the blog.
  • New Ruby Class dialog now allows to create classes nested in the right modules. Find more on the blog.
  • Rollbacks for generated Rails entities. Find more on the blog.
  • Cucumber 3 support.
  • Customizable colors for RegExp syntax highlighting.
  • Support for Emoji characters in the editor.
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

We’ve added a collection of Live Templates for Angular. 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.