RubyMine 2020.1 EAP is Open!

Posted on by Andrey Aksenov

Hello everyone,

Today we are happy to announce the opening of the Early Access Program (EAP) for RubyMine 2020.1! You can get EAP builds from our website, use the Toolbox App, or update to them using snaps if you’re an Ubuntu user. Note that the EAP builds are free to use but expire within 30 days of the build date.

In the first EAP build, you’ll find new options for working with Docker Compose SDKs, support for running Rake tasks from the gutter area, an improved experience for creating tests, and some other nice features. We’ve also fixed up several annoying little issues related to the debugger and to Docker support. Let’s take a look at the most interesting improvements first.

Creating tests

With this EAP, we’ve improved the process of creating new tests when navigating from a test subject. RubyMine can now create a new test for any class, replicating the directory structure based on the path to the test subject. For example, our Rails application has two test folders: the test folder for Minitest tests and the spec folder without tests for RSpec. If you open the app/models/user.rb file containing a User model and select Navigate | Go to Test (⇧⌘T / Ctrl+Shift+T) from the main menu, RubyMine will display the following popup.
Choose Test popup
Select Create New Test here. In the invoked dialog, RubyMine offers you the choice of whether to create a new test in a new spec/models folder that does not yet exist or add a test in test/models.
Choose Destination Directory dialog
After choosing spec/models and clicking OK, you only need to provide the class name and choose whether to create a test from scratch or use a predefined test template.
New Test popup
Press Enter to finish, and that’s it!

Running Rake tasks from the gutter

RubyMine already provides a quick and easy way to run Rake tasks using the Run Anything popup. Starting with 2020.1, you can also run, debug, and profile your tasks right from the gutter menu.
Run Rake tasks from gutter
As always, RubyMine automatically creates corresponding run/debug configurations for the tasks that were run.
Run/debug configurations for Rake tasks

Smart execution of terminal commands

RubyMine provides a nice coherent user experience for executing various actions. For example, when you run tests, you can quickly specify the required environment in the dedicated dialog, examine test results in the Run tool window, and then reuse the automatically created test configuration for running tests again. With v2020.1, you can take advantage of these features when executing commands from the embedded RubyMine terminal emulator. Once an input command is matched, the terminal highlights it.
Match terminal command
You can run this command by pressing Ctrl+Enter. The IDE will show a special UI for running this command.
Execute test dialog

To try this feature out, enable the terminal.shell.command.handling flag in the Experimental Features dialog.
Tip: To invoke Experimental Features, press Ctrl+Shift+A / ⇧⌘A and start typing ‘Experimental Features’.

Docker Compose improvements

With RubyMine, you can run, debug, and test your application in a particular environment by using Docker Compose as a remote interpreter. To work with the Ruby interpreter inside Docker, the IDE analyzes the Ruby environment by running specific commands inside a container, such as which ruby, gem env, and rbconfig. Then, RubyMine copies the Ruby SDK and gems to a local cache to enable the use of code insight features, such as code completion or navigation.
With v2020.1, you can adjust how the IDE interacts with Docker to analyze the Ruby environment. Open the Settings/Preferences dialog and go to the Ruby Docker Integration page.
Ruby Docker Integration settings

The Interaction mode allows you to specify how the IDE runs commands for analyzing the Ruby environment. For example, you can select whether to execute these commands in a target container (docker-compose exec), create a new environment (docker-compose run), or use the dedicated IDE auxiliary container for this purpose.

Machine-learning-assisted completion for Ruby

In v2019.3, we’ve introduced ML-assisted completion for Ruby. This improves the code completion feature by reordering elements in the completion popup and ranking the more relevant items higher. In the image below, you can see the position changes for members exposed by the User model class with the enabled ML-assisted completion: for example, the find_by method was moved up one position compared to the default completion mechanism, while find_by_sql dropped four positions.

Machine-learning completion

You can enable the ML-assisted completion and change its settings on the Editor | General | Code Completion page of the Settings/Preferences dialog.
Machine-learning completion settings
Note that work on this feature is still in progress and we’re constantly working to improve the quality of ML-assisted completion.

Important bug-fixes and other useful features

In addition to the features mentioned above, we’ve implemented the following fixes:

  • We fixed an issue that caused attaching to a process to kill it. RUBY-22070
  • The interactive console is available now when debugging under the Docker Compose SDK. RUBY-21611
  • We fixed the issue related to starting the debugger with jruby-9.2.9.0. RUBY-25336
  • A code coverage report is now shown when using the Ruby interpreter managed by chruby. RUBY-23732

Other notable changes include the following:

  • RubyMine now enables you to install the Bundler whose version differs from the one installed in the SDK. RUBY-25520
  • You can now search for usages of a parent method. RUBY-24658
  • Navigate | Go to Super Method now allows you to select the exact super method you want to navigate. RUBY-25554
  • In the Structure view, you can filter out the variables to look only at methods. RUBY-11850
  • We’ve added support for Module#module_function. RUBY-15259

Platform-wide changes

In addition to the specific improvements for Ruby and Rails, the following changes have been made for RubyMine and other IntelliJ-based IDEs:

  • With the v2020.1 EAP, we are fully moving to JetBrains Runtime 11 (JBR11), and will no longer distribute builds with JetBrains Runtime 8 (JBR8). Please note that all the IntelliJ IDEA 2020.1 updates, both in the IDE and the Toolbox App, will come with JBR 11.
  • RubyMine and other IntelliJ-based IDEs now use the brand-new JetBrains Mono font (Settings/Preferences | Editor | Font).
  • The IDEs now use the reworked Interactively Rebase from Here dialog that allows you to edit, combine, and remove your previous commits.
  • The light theme is now unified for all operating systems and goes by the name IntelliJ Light.
  • The Quick documentation popup appears on mouseover by default. You can disable this option in Settings/Preferences | Editor | General.

Please keep in mind that v2020.1 is still under heavy development and, therefore, the EAP builds might be unstable. Let us know about any issues you come across here in the comments, in our issue tracker, or on Twitter.

Happy Developing!
Your RubyMine team

Comments below can no longer be edited.

12 Responses to RubyMine 2020.1 EAP is Open!

  1. Jez says:

    July 5, 2010

    Awesome work guys – I can’t wait to get these features in Sass 3!

  2. Pjero says:

    July 5, 2010

    Nice!
    I also cant wait for SASS to have this to.

    Keep up the good work

  3. Oleg Shpynov says:

    July 5, 2010

    @Pjero Your website really rocks 🙂

  4. Amit says:

    July 5, 2010

    Yey!

    Finally, LESS support is here..
    I’m using Rubymine for 6 months now, and this is the only feature that can make me even more productive 🙂

  5. Oleg Shpynov says:

    July 5, 2010

    @Amit Develop with pleasure!

  6. Bhavin says:

    July 27, 2010

    Hi,

    I have been using the latest build and have been thoroughly impressed with your decision to include LESS support. It shows how much you care about developer productivity.

    I have recently migrated to less.js from ruby-based LESS. Since it gets parsed at client-side. It makes the whole deplyment cycle especially during development less painful. However, it has minor differences with ruby-based LESS. Do you have plans to support those syntax? For example, it supports javascript evaluation using wrappers.

    Also, one minor glitch that I have noticed in this build is that it does not recognize less variables that are imported through @import. Do you plan to fix that in the upcoming builds.

  7. Oleg Shpynov says:

    July 27, 2010

    Hi Bhavin,
    Thanks a lot for your feedback!
    Talking about LESS support:
    1. Glitch with variables in imports is already fixed an will be available in next EAP build coming soon.
    2. We don’t have any plans for supporting less JS, however feature request is welcome at: http://youtrack.jetbrains.net/issues/RUBY

    Best regards,
    Oleg

  8. Ronnie says:

    July 29, 2010

    I am currently using LESS in my grails application with Intellij 9.0.2. I’m really liking the LESS js but I can’t seem to find the Intellij 9.0.2 support for LESS in the config. Can you point me in the right direction so I can enable this?

    Thanks in advance.

  9. Pierre says:

    July 1, 2011

    Hello
    I have the syntactic colors for less file in intellij 10.5.1 but I don’t
    have code completion as shown in the screenshot. Is this feature available for intellij ?

  10. Eric says:

    August 23, 2011

    Where can I vote for LESS support for IDEA? It’s still not in 10.5?

  11. Yuriy says:

    September 26, 2011

    CSS code completion still does not work in IntelliJ IDEA 10.5.2 in LESS files.
    When can it be fixed?

Subscribe

Subscribe for updates