RubyMine 2023.3

Released: Dec 6, 2023

Updates in 2023.3

Features

AI Assistant [General Availability]

  • JetBrains AI Assistant is now generally available with a number of new and improved features to increase your productivity in JetBrains IDEs.
    • Support for AI-generated name suggestions - You can now enable AI-generated name suggestions for local variables and parameters in your Ruby code. This action is available when you use the Rename refactoring inline.
    • Improved Ruby contexts - Improve Ruby contexts and the way LLMs analyze your codebase. These changes influence how AI Assistant generates documentation, explains your Ruby code, recognizes file contents, and more.
    • Unit test generation - With AI Assistant, you can effortlessly generate tests for public methods in your Ruby or Rails application.
    • You can use AI Assistant in RubyMine as a supplemental feature with a JetBrains AI Service subscription.

Rails

  • Custom paths for Rails applications and engines - RubyMine now recognizes when you use custom paths in your Rails applications and engines. In addition to the default paths, such as app, app/controllers, and app/models, the IDE recognizes any other locations in your project when configured. This enables you to redefine the default structure and still benefit from RubyMine's code insight features.
  • Auto-import of Rails paths - Added a new option to automatically detect custom paths within your Rails application. Every time you open your project, RubyMine attempts to import the Rails paths configuration in the background.
  • Code insight for models, controllers, and mailers stored outside of their default locations - All of your favorite code insight features, such as navigation and type support, will now work with models, controllers, and mailers, even if they are outside of their default directories.
  • Сode insight for Rails 7.1 strict locals - RubyMine now supports resolution, completion, Find Usages, Rename, and navigation features for strict locals.

Type inference

  • Type provision for custom self-types inside blocks - RubyMine now has support for customizing the self-type of blocks from RBS to Ruby. This feature is beneficial for DSLs and will help RubyMine recognize them, enhancing code insight.
  • Custom annotation to specify the self-type of blocks - By utilizing a YARD-like comment, you can now explicitly state the self-type of blocks directly within them.
  • Support for extra declarations from RBS - Added basic support for recognizing extra declarations from RBS when they are absent in your Ruby files. This is particularly beneficial for projects that extensively use reflection, as it allows for these declarations to still be present in completion and other RubyMine features. The feature is available for classes, modules, constants, methods, and variables.

Debugger

  • Update for debugger type renderers - You no longer need to restart the debugger to apply changes to the type renderers. Simply click the Apply button, and RubyMine will reload them instantly.

Tools and Libraries

  • RuboCop in server mode - RubyMine now supports running RuboCop in server mode automatically. For this functionality to work, make sure the following requirements are met:
    • Linux or macOS.
    • Local Ruby MRI 2.3 or later.
    • RuboCop 1.31 or later.
  • Brakeman code inspections - You can now conveniently see Brakeman's insights within RubyMine in a user-friendly format. Tackle security issues promptly, with easy access to Brakeman's documentation, confidence indicators, and more.
  • Parameterized specs with rspec-parameterized - RubyMine now provides comprehensive support for the RSpec::Parameterized syntax, including recognition, resolution, and completion suggestions. Run/debug configurations have also been implemented to enhance your testing experience.
  • Fixture declarations with let_it_be - Added support for fixture declarations in RSpec tests using let_it_be blocks. This includes features such as variable resolution, syntax highlighting, automatic handling of do block insertion for before_all, and more.