RubyMine 2021.2 Help

RBS

RubyMine supports the RBS language to describe the types used in Ruby programs. RubyMine recognizes .rbs files and provides the following coding assistance:

RBS type signatures

RubyMine supports RBS type signatures and uses them to determine the type of Ruby elements. This helps you to experience better code insight when developing your code in Ruby.

If you have RBS files in your project, RubyMine provides:

  • Better method name completion

    RubyMine displays methods from appropriate classes at the beginning of the list, when invoking code completion.

    Method name completion with RBS
  • Improved navigation actions

    When you invoke the 'Go to declaration' action, RubyMine navigates you to the exact declaration instead of providing a list of declarations to choose from.

    Go to declaration with RBS
  • Search for usages of the corresponding declaration

    With RBS types, RubyMine can find the correct declaration of a Ruby element. When you invoke the 'Refactor' action, RubyMine instantly finds usages of the corresponding declaration instead of giving you a list of declarations to choose from.

    Find usages with RBS
  • Consistent rename refactorings

    RubyMine finds all usages of a particular Ruby element that you are renaming. After invoking the 'Find usages' action, there will be fewer references marked as 'Untyped (potential) usages'.

    Rename refactoring with RBS

View the type info

  • Having RBS signatures provided, RubyMine uses them to determine types of Ruby elements. To view the element type, place the caret at the desired Ruby element and go to View | Type InfoCtrl+Shift+P.

    Viewing type info

Check the return/parameter type match

  • RubyMine can check whether the return and parameter types of a method match the corresponding types in an RBS file. If the actual and expected types mismatch, the editor will show you a warning.

    Incompatible parameter type

    You can manage these warnings using the Mismatched return type and Mismatched parameter typeinspections.

Create an RBS file

  1. In the Project view Alt+1, select the directory where you want to create a new RBS file.

  2. Press Alt+Insert and select RBS File/Class from the popup.

    Create a new RBS file

    As another option, select File | New | RBS File/Class from the main menu.

  3. Specify the filename and press Enter.

Generate an RBS prototype

RubyMine provides a tool to generate simple signature prototypes from your Ruby code. These prototypes may help to figure out how to start adding new RBS types to your project.

  1. Open a Ruby file, for which you want to generate type signatures.

  2. From the main menu, go to Code | GenerateAlt+Insert.

  3. Select Type Signatures in the Generate popup.

    Generate an RBS prototype

    RubyMine will generate a new RBS file with the same name as your Ruby file. All types included in the resulting prototype are specified as untyped. You can use them as templates for writing type signatures.

View the structure of an RBS file

You can examine the high-level structure of an RBS file using the Structuretool windowAlt+7.

Structure tool window

Navigate between Ruby and RBS files

RubyMine enables you to navigate from a Ruby declaration to its type signature, and vice versa. Navigation features are available for:

  • Attributes (currently works only when navigating from RBS to Ruby)

  • Classes, modules, and constants

  • Class and instance variables

  • Global variables

  • Methods (including singleton)

Go to the type signature

  • Select a Ruby declaration and go to Navigate | Type Signature to navigate to its type signature.

    Navigating between a Ruby declaration and its type signature

Go to the associated Ruby declaration

  • Select a type signature and go to Navigate | Associated Declaration to navigate to the associated Ruby declaration.

    Navigating between an RBS signature and an associated Ruby declaration

Navigate with intention actions

  1. Place the caret at the required element and press Alt+Enter.

  2. Select the action to navigate to the required type signature or associated declaration from the list. Press Enter to apply the intention action.

    Navigate with intention actions

Navigate to a related Ruby or RBS element

  1. Place the caret at the required element and go to Navigate | Related SymbolCtrl+Alt+Home.

  2. Select the desired target from the popup if required.

    Navigate to a related Ruby element

Check Ruby types using Steep

RubyMine has integration with Steep, a static type checker for Ruby, and supports running Steep commands using Run anything. Before working with Steep, make sure to add the steep gem to your Gemfile:

gem 'steep'

After installing Steep, you need to generate a Steepfile for your project.

Generate and configure a Steepfile

  1. Press Ctrl twice.

  2. Start typing steep init in the search field. Select the command from the list of suggestions and press Enter. RubyMine will generate a Steepfile for your project.

  3. Open and edit the generated Steepfile. For example:

    target :lib do check "lib" signature "sig" library "set", "pathname" end

Run type checking

  1. Press Ctrl twice.

  2. Start typing steep check in the search field. Select the command from the list of suggestions and press Enter.

    RubyMine will display the command output in the Run tool window.

    Command output in the Run tool window

Configure code style settings

RubyMine applies the same code style settings for both Ruby and RBS. To customize the code style for RBS:

  1. In the Settings/Preferences dialog Ctrl+Alt+S, go to Editor | Code Style | Ruby.

  2. Configure the desired code style settings.

Configure syntax highlighting

RubyMine uses the Ruby color scheme to highlight the syntax in RBS files.

You can configure RBS-aware syntax highlighting according to your preferences and habits.

  1. In the Settings/Preferences dialog Ctrl+Alt+S, go to Editor | Color Scheme | Ruby.

  2. Select the color scheme, accept the highlighting settings inherited from the defaults or customize them as described in Configure colors and fonts.

Last modified: 10 November 2021