What’s New in RubyMine 2024.3

Enhanced cloud-based code completion, inline AI prompts, Kamal 2 support, built-in integration with the RBS Collection, Ruby 3.4 updates, and spelling and grammar checks powered by Grazie

AI Assistant

Enhanced cloud-based code completion

RubyMine 2024.3 introduces faster and more contextually aware cloud-based code completion through the JetBrains AI Assistant plugin, featuring quality and speed improvements and adding support for multiline completion.

Powered by the Mellum large language model (LLM), completion latency is nearly one-tenth of what it was in previous versions, leading to almost instant suggestions. The acceptance rate for completion suggestions has approximately doubled, while the cancel rate has dropped to between half and a third of what it was in the previous version.

Please note that cloud-based code completion in AI Assistant is available only with an AI Pro subscription or an active free trial.

Improved Rails context for unit tests

RubyMine now provides AI Assistant with more context about Rails applications for better unit test generation.

Inline AI prompts

RubyMine 2024.3 introduces inline AI prompts, offering a seamless way to interact with AI Assistant directly in the editor. You can type requests in natural language, which AI Assistant instantly interprets and converts into code changes, marked with purple in the gutter for easy tracking. Inline AI prompts are context-aware, automatically including related files and symbols for more accurate code generation.
The feature is currently available in *.rb files.

Rails 8 support

Kamal 2 support

Rails 8 provides support for deploying your applications with Kamal 2, and in RubyMine 2024.3, we’ve implemented code completion for Kamal 2 configurations.

Nilability annotations from schema.rb for type support

RubyMine now recognizes the not-null type modifier for migration attributes and provides highlighting and warnings for incorrect nil assignments.

Code insight for Solid Queue and Solid Cache

In RubyMine 2024.3, queue_schema.rb and cache_schema.rb files now feature specific icons and syntax highlighting.

RBS

Built-in integration with the RBS Collection

RubyMine now features built-in integration with the RBS Collection, a community-managed collection of RBS files for gems that do not include signatures.

Even if you don’t use RBS in your project, you can still benefit from the type signatures included in the RBS Collection, with no additional effort required. RubyMine will automatically download and manage the type signatures for the project dependencies.

Ruby

Ability to use it as an alias for numbered parameters in blocks

RubyMine now recognizes it as an alias for _1 in blocks without parameters, providing type support and conversion intentions for such usages.
We added a new error annotation that prevents you from using it in a block with regular numbered parameters.

Support for Ruby 3.4 "chilled" strings

RubyMine now recognizes "chilled" strings, a new transitional state for string literals in Ruby 3.4. In projects without the frozen_string_literal pragma, strings are "chilled" – allowing modifications with a warning rather than resulting in an error.

Error annotations for ambiguous anonymous arguments

RubyMine now displays an error when you try to use anonymous block, rest, and keyword rest arguments in an ambiguous nested context.

VCS

Updates to Find in Files

The Find in Files feature has been enhanced with a new search scope, Project Files Excluding Git-Ignored. This option excludes any files ignored in .gitignore files from your search results, helping you focus only on the relevant code when searching through your project.

Option to disable background pre-commit checks

You can now manage background checks during the commit process with a new Run advanced checks after a commit is done option under Settings | Version Control | Commit. This setting lets you decide if tests and inspections should run after making a commit. If you want these checks to be completed before the commit happens, simply disable it.

User experience

Bundled spelling and grammar checks

The Grazie plugin is now available in RubyMine out of the box. It provides intelligent checks beyond simple spelling mistakes and typos. It understands grammar rules and can warn you about inappropriate style.

Grazie checks are available in strings, heredocs, comments, block comments, and RDoc files.

You can manage Grazie checks in Settings | Editor | Natural Languages | Grammar and Style | Scope.

Improved console support

We’ve added new options to control whether the first completion suggestion is preselected when using consoles or the Evaluate Expression field during debugging.

During debugging, the Evaluate Expression field now accurately reflects self types, recognizes local variables and parameters with inferred types, and supports completion for new local variables introduced within the current stack frame session.

Console sessions remember previously executed commands and provide type inference and completion for local variables.

Increased default tab limit

We’ve increased the default tab limit in the editor to 30. This means you can now keep more tabs open before the IDE starts closing the ones used least recently. You can control this setting in Settings | Editor | General | Editor Tabs.

Optimized placement for the Rename action

We’ve optimized the placement of the Rename action in the context menu when called on elements in the editor and the Project tool window. The action is now at the top level, making it easier for users who frequently rely on the mouse to quickly rename files, variables, and other elements.

Updated UI for the new terminal

We’ve updated the new terminal’s UI with a more compact design, reducing padding to maximize your screen real estate. The smaller padding saves space, giving you enhanced visibility while working with commands without sacrificing readability.

Highlighting for all occurrences of selected text

By default, RubyMine will now automatically highlight all instances of the text you select within a file. This makes it easier to track where the selected text appears throughout your code.