What's new in RubyMine

2019.1 (Apr 4)

RubyMine 2019.1 features major Docker updates, Ruby profiler, full Factory Bot support, custom themes, and more. Check out all the new things below and update today. We also encourage you to submit any issues and join the RubyMine Slack!

Docker

Docker-compose exec

Rethink Docker with docker-compose exec

RubyMine adds support for
docker-compose exec. Simply put, this command when enabled allows you to run and debug applications, install gems and do other development tasks faster than before.

Read How to work with Docker/Docker Compose from RubyMine for details.

Experimental: Run with docker compose.

Speed RubyMine up

In Experimental features, enable ruby.docker.internal.via.exec to speed up RubyMine when you're working with a Docker SDK.

Now you can add gems, run rake tasks, rails commands and other things that update your environment, without rebuilding Docker images.

Recent locations

Recent locations

Recent locations popup

The new Recent Locations popup reinvents the way you navigate your codebase. This popup helps you find the actual code when you only remember what it was about, but don’t have any idea where you have seen it. Start typing to filter the results and jump to the code you need.

Read RubyMine Navigation: Recent Locations Popup for details.

Profiler

Create i18n translation

Profile applications

RubyMine 2019.1 integrates rbspy and provides a native profiler to help you discover parts of code that slow down your application and/or tests.

For a detailed tutorial, read Profile Ruby & Rails Apps With rbspy in RubyMine.

Attach profiler to running app

Attach to running apps

Note that you can attach the profiler (Find action / Attach Profiler to Process) to your running application and investigate it in real time!

Factory Bot

Autocomplete and navigate attributes

When you are adding a factory, RubyMine autocompletes its attributes and, if possible, their values too. For instance, for a Rails model factory, the IDE will autocomplete its fields with their content, and even associations. And of course you can navigate between the definitions and usages of those objects.

Complete factory creation methods in test files

Autocomplete and navigate methods

When you are writing tests, you can autocomplete and navigate to the definitions of factory creation methods, such as create, build, build_stubbed, and others.

Other cool features of Factory Bot, such as sequences, traits, and aliases are also fully supported.

Full MVC integration

We also added factories to the Related files popup (Navigate / Related symbol), and added a gutter that allows you to go to partial factory declarations if they exist.

Call Hierarchy

Call Hierarchy

Investigate method calls

The new Call Hierarchy action helps you dig into methods (“callers”) that use the method you are investigating, the methods that call these callers, and further as deep as you need.

For more information, refer to this blog post.

TruffleRuby

TruffleRuby

TruffleRuby support

RubyMine 2019.1 adds support for TruffleRuby! To switch your current Ruby SDK to TruffleRuby, make sure you have the interpreter installed, and choose it in the Ruby SDK settings.

By the way, in this release we also fixed many issues with Ruby version managers.

JavaScript

TypeScript in Vue

Improved support for TypeScript in Vue apps

RubyMine now uses the TypeScript language service together with its own TypeScript support for any TypeScript code in .vue files. This means that you’ll now get more accurate type checking and type info, you will be able to use the quick-fixes provided by the service, and see all the TypeScript errors in the current file in the TypeScript tool window.

Highlight errors in tests

Highlighting for failed line in test

When you run tests with Jest, Karma, Mocha, or Protractor and some tests fail, you can now see right in the editor where the problem happened. The IDE will use the information from the stack trace and highlight the failed code. On hover, you’ll see the error message from the test runner and you can immediately start debugging the test.

New debugger console

New debugger console

Meet the new, improved interactive debugger console in the JavaScript and Node.js debug tool windows! It now displays objects using a tree view, and it supports styling of log messages with CSS and grouping them using console.group() and console.groupEnd(). You can also filter out any type of log messages.

New debugger console

Completion for npm scripts

When adding new scripts to the package.json file, the IDE now provides suggestions for available commands provided by the installed packages. After typing node, the IDE will suggest folder and file names. And after typing npm run, you’ll see a list of tasks defined in the current file.

See what's new in WebStorm for more of the JavaScript improvements available in RubyMine 2019.1.

HTML & CSS

HTML and CSS

Updated documentation

The documentation (F1) for CSS properties and HTML tags and attributes now shows up-to-date descriptions and information about the browser support from MDN as well as links to the full MDN articles.

Custom themes

Custom themes

New UI themes

You can now use the new colorful UI themes in RubyMine that are available as plugins. Choose between the Dark Purple, Gray, and Cyan Light themes, or create your own.

Database tools

Improvements in Database tools – New Sources

The database tools in RubyMine have got some cool improvements thanks to our colleagues on the DataGrip team:

  • Support for new databases: Greenplum, Vertica, and Apache Hive
  • Code completion supports combined statements for CREATE and DROP
  • Support for DEFINER attributes in MySQL and MariaDB
  • Support for the Oracle mode in MariaDB
  • You can now set the default folder for a project

Other improvements:

  • Ability to run and debug tests with Spring
  • Polymorphic associations: supported source and source_type params
  • Specify alternative gemfiles using bundle.config
  • Specify local gems path using bundle.config
  • I18n: support for default option
  • Improved support for query field methods in Rails models
2018.3 (Nov 22)

Code Insight

Support for Rails scopes

Rails scopes

The IDE now understands Rails scopes much better. For example, when you add an association object to your scope, RubyMine will suggest available finder methods. You will also discover code autocompletion and navigation for chained scopes.

Struct support

Struct

RubyMine adds full support for Struct. Now you can autocomplete, navigate, and refactor objects of Struct classes the same way you do with any other Ruby classes and their instances.

Nullability analysis for Ruby

Nullability analysis for Ruby

A new Nil dereference inspection will check your code for possible nil errors in the current context, like when you call a method on a variable that might be nil.

Internationalization

Creating I18n translations

Use the new I18n dialog to create translations for all your dictionaries at once. Just like before, put the caret on a string, press Alt+Enter, and choose to i18nize it. Then, once generated, hold Cmd/Ctrl and click the created key to navigate to any existing translation.

Scopes and lazy keys

You can also create translations for namespaced keys and lazy lookups with no extra effort, as the new version of RubyMine lets you create translations for such keys right from the editor.

Translation previews

RubyMine can show you actual translations instead of I18n keys – just press Cmd./Ctrl. on any key in a controller or a view file. You can even choose which dictionary should be used as a translation preview.

Read i18n features in RubyMine for other internationalization improvements made in v2018.3.

Refactoring

New Extract Parameter dialog

Extract Parameter

The new Extract Parameter dialog (Refactor | Refactor this | Extract Parameter) allows you not only to extract an argument, but also to provide a default value for it, make it optional, or pass it as a block.

Inline refactoring improvements

Improved Inline refactoring

We've improved the Inline refactoring to let you get rid of of excessive methods and variables more safely. In particular, inlining methods with arguments and variables with string interpolation is now much more robust.

Extract Substrings to variables and constants

Extract substrings to variables & constants

Finally, we've added a very handy ability to extract parts of strings to variables and constants.

Read more about refactoring options in RubyMine Refactorings: Overview & Improvements.

New intention actions

Intention actions

New intention actions will help you make your code more readable. For example, you can now use the De Morgan's law intention to simplify ugly negations and extract block calls to methods. Just put your caret at a code smell and press Alt+Enter to apply an appropriate quick-fix.

Read about other new intentions in Intention Actions in RubyMine.

Tests

Test gutters

Test gutters

RubyMine 2018.3 also puts a handy gutter at each test method. These gutters are visual anchors that show you every particular test that can be run in a file. They also offer a faster way to run tests than the context menu does.

Read Running tests in RubyMine to learn about other handy testing features.

Git

Github pull requests

View pull requests

Now you can view GitHub pull requests right inside RubyMine. Go to VCS | Git | View Pull Requests to view the pull request’s description, labels, assignees, and the actual changes.

In addition, all the familiar features in the Git integration, such as update project, commit changes, view diff, and conflict resolution, now work with Git submodules.

User Interface

New Darcula color scheme

Renewed Darcula

The new Darcula theme gets rid of noisy colors, becomes easier on the eye, and better aligns with similar schemes designed for other programming languages in JetBrains IDEs.

The previous Darcula is still available, too. If you prefer to stay with it, go to Preferences / Settings | Editor | Color Scheme | Ruby, click on the gear icon, and choose Transform current scheme to Darcula 2018.2.

New Search Everywhere dialog

Search Everywhere

You will also discover the new, more convenient Search Everywhere dialog (Shift+Shift). It makes it easier to use all the other navigation dialogs – Go to Class, File, Symbol, and Action. Simply press Tab to switch between the search types.

New Plugins UI

Plugins UI

The updated Plugins section (Preferences / Settings | Plugins) makes it easier to manage, install, uninstall, and update plugins. For example, now you can search for plugins by tags, and sort the results by downloads, name, rating, featured, or updates.

JavaScript

Improved completion in Angular templates

Frameworks

As you work with Angular, enjoy improved code autocompletion and navigation for variables, pipes, and async pipes and the template reference variables.

In React apps, code completion now suggests all component lifecycle methods. The Unresolved variable inspection warns you about the possibly undefined components.

Autoimports in JavaScript

Autoimports in JavaScript

In JavaScript files, the IDE can now automatically add imports not only for symbols defined in your project, but also for symbols from the project’s dependencies. This works if the library has sources written as ES modules or a TypeScript type definition file.

Extract CSS ruleset

HTML and Style Sheets

The new Extract ruleset action (Alt-Enter) helps you quickly extract CSS declarations from one ruleset to a new, more specific one.

The code style for CSS and its preprocessors now has a configuration for the use of blank lines. Moreover, you can now sort the CSS properties inside blocks – alphabetically or in any custom order.

See what's new in WebStorm for more of the JavaScript improvements available in RubyMine 2018.3.

Markdown

Markdown improvements

Extracting reference links and more

The new Introduce reference action helps you create references for inline links. The IDE will find all the link duplicates in the file suggest replacing them with the newly created reference.

In addition, you can now strikethrough text and toggle header size. Find these new actions in the toolbar.

Other improvements:

  • Improved highlighting of keywords in conditional statements
  • Search for YAML values by flattened nested keys
  • Copy a path to a YAML value from breadcrumbs
  • Improved support for attr_accessors
  • Parameter hints in JavaScript files
  • High-contrast theme
  • Safe delete in i18n
  • Activity monitor
2018.2 (July 26)

Code Insight

Block element completion

Better code insight

The upgraded Ruby type inference makes the IDE significantly better at understanding types of elements in blocks, arrays, and hashes, which greatly improves the code autocompletion and navigation on the whole.

Find more details on the blog

Polymorphic associations

RubyMine now correctly recognizes and navigates (Ctrl/Cmd + Click) to definitions and usages of models that use polymorphic associations.

Autocompletion for abstract model names also becomes available if a polymorphic association is defined in the project.

Find more details on the blog

Version managers

Version managers

chruby, asdf, and remote version managers

The new release features chruby and asdf support. It makes all the version managers (RVM, rbenv, asdf, and chruby) available in WSL, Docker, as well as in SSH and other remote connections.

You will also discover that rbenv-vars and other plugins work correctly in the new version.

Find more details on the blog

Tests

Rerun failed tests

Now after you’ve run all tests in a file or directory, RubyMine provides an option to rerun the failed tests only, instead of rerunning all the tests. This frees you from manually picking up and investigating every failed test.

The new feature also works with presets like rake test and rake spec.

YAML

YAML code formatter

RubyMine now allows you to reformat YAML code. Select Code | Reformat Code, or press ⌥⌘L / Ctrl+Alt+L.

You can also choose how to fold and indent sequences, align values, and apply other code style options in Preferences / Settings | Editor | Code Style | YAML.

Find more details on the blog

Code insight for anchors and aliases

You can now autocomplete and find usages of aliases when an anchor is defined, as well as navigate to the anchor and back.

Inline renaming for aliases and anchors is also available now. The IDE will warn you if you try to provide a name that conflicts with another existing anchor. It will not let you rename anchors using characters that aren’t allowed by the standard.

A number of basic YAML code inspections were added as well.

Find more details on the blog

More YAML improvements

With this release you can autocomplete YAML data structures that have a JSON Schema file. The IDE automatically traces schemas from schemastore, but also provides a way to manually add and configure JSON schema files in the settings.

Finally, you can now quickly copy & paste a key path to a value in .yml files instead of typing out the full path.

Find more details on the blog

Debugger

Attach to remotely running processes

Attach to remote processes

Starting with this release you can attach the debugger to remotely running processes. Set up an SSH connection (Preferences/Settings | Ruby SDK and Gems | New Remote | SSH Credentials), and troubleshoot the app without restarting or any additional configurations.

Learn how to attach to remote processes with the debugger

JavaScript

JavaScript and Typescript

You will discover new intentions (Alt+Enter) for JavaScript and TypeScript, such as Implement interface, Create derived class, Iterate with 'for..of', and more.

Also, the IDE now supports all new features from TypeScript 2.9 and the upcoming TypeScript 3.0 releases.

Frameworks

You can now refactor React components with Refactor | Extract Component, and convert React class components into functional components and back.

In addition, code completion is now available for events and event modifiers in Vue templates.

See what's new in WebStorm for more of the JavaScript improvements made in RubyMine.

Git

Better detection of merge conflicts

Better detection of merge conflicts

Now it’s easier to find files with merge conflicts as the IDE groups such files under a new Merge Conflicts node. Click the Resolve action link to open the Files Merged with Conflicts dialog.

Browse repository at revision

Browse repository at revision

There's a handy new Browse Repository at Revision action for exploring the state of the repository based on any given revision. Open the context menu in the Log or from the file history to access the required repository state in the Project Tool Window.

Skip the Push dialog

Skip the Push dialog

It is now possible to skip the Push dialog while using the Commit and Push action, or only show it when pushing to protected branches. Customize this behavior in Preferences / Settings | Version Control | Git.

Multiple GitHub accounts

Multiple GitHub accounts

You can configure as many GitHub accounts as you need (Preferences | Version Control | GitHub), and set the default GitHub account for each of your projects.

User Interface

Touch bar support

MacBook Touch Bar support

Run, build, and debug your app, commit changes, and update the project right from the Touch Bar.

All Touch Bar contexts can be customized in Preferences / Settings | Appearance & Behavior | Menus and Toolbars.

Dark window headers

Dark window headers and new icons

Make RubyMine title bars darker on macOS. Go to Preferences | Appearance & Behavior | Appearance and select Use dark window headers.

RubyMine 2018.2 also features a number of brand new icons, designed to provide a clearer and more consistent look & feel.