RubyMine 2023.1: Rails 7 and Ruby 3.2 Support, Improved Performance, Refreshed New UI, and More!
The release of RubyMine 2023.1 is now available!
The Ruby and Rails IDE has been upgraded to support Rails 7 and Ruby 3.2 with additional improvements, including a refreshed new UI, faster code completion, decreased memory usage, better gem synchronization on WSL, simpler navigation, and enhanced integration with Docker. Moreover, users can now effortlessly work with shared contexts and examples in RSpec, and much more.
Here are some highlights of the key features. For a detailed description of this update, please visit our What’s New page.
Ruby and Rails
Support for turbo-rails completion in Rails 7
Are you currently using or planning to upgrade to Rails 7? With the latest release, RubyMine’s autocomplete feature now supports Rails 7’s turbo-rails methods, enabling you to write Ruby code faster and more efficiently.
Completion of field parameters in ActiveRecord methods
We’ve included code completion support options for certain CRUD methods of the ActiveRecord class. RubyMine will now provide suggestions for argument completion for the following ActiveRecord methods:
- Class ActiveRecord::Inheritance::ClassMethods
- Class ActiveRecord::Persistence::ClassMethods
Methods: create, create!, update, update!
- Class ActiveRecord::Persistence
Methods: update, update!, update_columns, update_attributes, update_attributes!
- Class ActiveRecord::Associations::CollectionAssociation
- Class ActiveRecord::Associations::CollectionProxy
Methods: build, create, create!
- Class ActiveRecord::Relation
Methods: new, create, create!, first_or_create, first_or_create!, first_or_initialize, create_or_find_by, create_or_find_by!, update, update!, build
Please note that some of these methods may not be defined in certain versions of Rails.
Code completion speed
We analyzed a great deal of anonymous user data and fixed a major performance issue following the analysis results. This almost doubled RubyMine’s code completion speed.
Memory consumption decreased
We fixed several issues that caused excessive memory consumption in RubyMine. When working with larger projects, the IDE memory footprint is now significantly smaller.
Gem synchronization on WSL
The new version of RubyMine comes with a built-in syncing tool optimized for working on WSL. This tool replaced rsync, previously used for file transferring during gem synchronization. The new solution is almost 10 times faster than the previous implementation.
New UI updates
Editor window zoom
You can now zoom into and out of the RubyMine editor window entirely, adjusting the size of all UI elements at once. This can be done by selecting View from the main menu, then choosing Appearance and adjusting the IDE’s scaling. Alternatively, if you have a touchpad or touchscreen, you can zoom in and out directly in the editor window.
To simplify the process of calling these actions, you can assign custom shortcuts to them in the Keymap section of the Settings menu. Simply navigate to the Main Menu, then View, and finally Appearance.
Configuration option to set up Actions on Save for new projects
In RubyMine 2023.1, there is a new configuration setting that allows you to define which Actions on Save for new projects.
To access this setting, go to File/ New Projects Setup / Preferences For New Projects / Tools / Actions on Save. From there, you can specify which actions should be automatically executed when changes are saved in your projects.
Hidden toolbar in Zen and Distraction Free modes in the new UI
The appearance and user interface of the IDE have been improved with the latest update. When the Zen and Distraction Free modes are activated, the top toolbar is hidden.
Vertical split for tool windows
With the updated UI, you can easily organize your workspace by splitting the tool window area. To move a tool window to the lower section, drag its icon from the sidebar and drop it below the separator. Alternatively, you can right-click on the icon to access the context menu and then select the Move to option to relocate it.
Search Everywhere is enabled with ML-powered search for classes
We’re making ongoing efforts to incorporate machine-learning ranking into the Search Everywhere (Double ⇧ / Double Shift) functionality to deliver more precise and relevant search outcomes. The machine learning-powered sorting algorithm is now enabled by default in the Classes tab, as well as in the Actions and Files tabs.
Configure Tailwind CSS
In this build, we’ve added support for all configuration options, such as configuring custom class name completions under the `classAttributes` option and even experimental ones like tailwindCSS.experimental.configFile.
You can find and set up these configuration options under Preferences / Settings | Languages & Frameworks | Style Sheets | Tailwind CSS.
Improved navigation from subject to subject definition in RSpec
We’ve enhanced navigation within RSpec to enable easy access to in-scope value definitions. You can now navigate to the nearest in-scope value definition by using ⌘Click (macOS) or Ctrl+Click (Windows) on a subject reference.
Run shared_examples_for and shared_context from the gutter
From this release onwards, utilizing shared_examples_for and shared_contexts has become simpler – it is now possible to execute them using gutter icons.
Fluent interface descriptions formatting for RSpec 3
The built-in RubyMine formatter now supports fluent interface descriptions for RSpec 3. While the tests are running, they will still have the default placeholder description. As soon as the tests are finished, these descriptions are replaced with the actual example names.
Merged logs from all Docker-compose containers
The Dashboard tab in the Docker-compose node has been enhanced to consolidate logs from all Docker-compose containers into a centralized location, allowing for real-time updates.
Support for Azure Container Registry
Connecting to Azure Container Registry is now much simpler.
To set it up, navigate to the Docker Registry section under Settings/Preferences | Build, Execution, Deployment | Docker. Then, in the Docker Registry input field, select the Docker V2 option.
New setting to apply the :z mount option to bind volumes on SELinux
You can add the :z configuration flag to Docker bind mounts. This allows you to connect volumes to Docker containers on SELinux workstations.
We’d love to hear more about your experience with RubyMine. Schedule a 40–60 minute call with us to discuss and answer your questions!
To learn about the newest features as they come out, please follow RubyMine on Twitter. We post product news and tips several times a week.
We invite you to share your thoughts in the comments below and suggest and vote for new features in the issue tracker.
The RubyMine team
Subscribe to Blog updates
Thanks, we've got you!
RubyMine 2023.3 EAP Update
Hello everyone! We’re back with an update on the state of the 2023.3 Early Access Program. You can download the latest EAP build from our website, via the free Toolbox App, or by using snaps for Ubuntu. Here are the biggest highlights of this release: Performance improvements As we me…
The RubyMine 2023.3 Early Access Program Is Open!
Hello everyone, The third RubyMine Early Access Program of 2023 is underway! The key change in the first EAP build is an important indexing optimization. By refactoring our code base, we’ve doubled RubyMine’s indexing speed compared to v2023.1. This is particularly noticeable when working…
Collaborative Programming in RubyMine
Hi everyone, We're back with a new how2pro blog post unveiling another cool RubyMine feature – the Code With Me plugin. When you're knee-deep in a complex task or tangling with an issue that's testing your limits, having someone by your side can make all the difference. Additionally, in an educati…
RubyMine 2023.2 With AI Assistant Is Out!
RubyMine 2023.2 is now publicly available! You can download it from our website or via the free Toolbox App. The latest version of the most intelligent Ruby and Rails IDE brings the brand-new AI Assistant and is packed with other improvements, including Turbo code completion in Ruby on Rails proj…