RubyMine 2016.3 Help

Part 2. Navigating to a Declaration or Implementation

On this page:

Preparing an example

Do the following:

  1. Add directory Animals under your project root (Alt+Insert | Directory).
  2. Create the following Ruby files (Alt+Insert | Ruby Class):
    • mammalia.rb
    • carnivore.rb
    • herbivore.rb
  3. Add the following code to the classes:
    • mammalia.rb:
      class Mammalia < Object @extremities = 4 def proliferates pass end def feeds puts "Milk" end end class Marsupials < Mammalia def proliferates puts "poach" end end class Eutherians < Mammalia def proliferates puts "placenta" end end class Feline < Carnivore @extremities = 4 def colors color = "?" puts color end def sounds sound = "?" puts sound end end class Cat < Feline color = "stripes and points" sound = "miaou" puts (color,sound) end class Tiger < Feline end cat = Cat.new puts cat.colors
    • carnivore.rb:
      class Carnivore < Mammalia def feeds puts "meat" end end
    • herbivore.rb:
      class Herbivore < Mammalia def feeds puts "grass" end end

Navigating to declaration

Place the caret at the method feeds of the instance of the class Cat, and press Ctrl+B. RubyMine jumps to the declaration of the method feeds, which is declared in the class Mammalia:

/help/img/idea/2016.3/rm_goto_declaration.png

Navigating to implementation

Now, place caret at the declaration of the class Mammalia and try to find out which other classes implement it. To do that, press Ctrl+Alt+B. You see a rather long list of classes implementing Mammalia:

/help/img/idea/2016.3/rm_goto_implementation.png

Ok, choose whichever implementation you need (for example, Tiger), and press Enter. RubyMine navigates to the selected implementation and places the caret at the class Tiger declaration:

/help/img/idea/2016.3/rm_goto_implementation_1.png

Should you select, for example Carnivore, which resides in a separate file, this file would open in a separate editor tab.

Side note about pin

Presumably, you have already noticed the pin icon /help/img/idea/2016.3/pin_small.png in the upper-right corner of the pop-up window. The same icon appears, for example, in the quick documentation lookup (Ctrl+Q). If you click this pin, the whole pop-up window will be "pinned", which in the case of navigation and search means that all the encountered occurrences will be presented in the Find tool window.

Navigating with gutter icons

Finally, let's look at the left gutter. You see there a number of icons with the arrows pointing up or down. What does it mean?

If you hover your mouse pointer over an icon, RubyMine will show the list of child classes or overriding methods (in case of the down arrow), or the parent classes (in case of the up arrow):

/help/img/idea/2016.3/rm_implementation_declaration.png

What happens, if you click an icon? If a certain class is subclassed, or a method is overridden in more than one class, RubyMine will suggest to select the desired target from the list:

/help/img/idea/2016.3/rm_declaration_implementation_1.png

After that, RubyMine jumps to the selected target, and places the caret at the class (method) declaration. If there is only one superclass/subclass, or method, then such a navigation is done silently.

See Also

Last modified: 22 March 2017