I Love RubyMine and I’m gonna tell you why!

Chantal Justamond
Sep 21, 2017 · 6 min read

If you are new to web development or just living under a rock you may not know about RubyMine. RubyMine is a Ruby and Rails IDE with first-class support for Ruby and Rails, JavaScript and CoffeeScript, ERB and HAML, CSS, Sass and Less, and more.

I’m a backend student @TuringSchool and when we started classes back in mod 1 (Module 1) we were asked to keep it simple. Instructors recommended using something like Atom or VS studio code which are pretty good code editors, so I did. I used Atom and VS Code for 4 and 6 weeks, respectively, and with some patience you can make them behave “almost” like RubyMine. Still, they didn’t compare.

This is my humble opinion and I’m NOT trying to go into a battle over which code editor or IDE is better. However, I do feel that this IDE doesn’t receive the love and/or appreciation that it should.

Here are some of my favorite features:

Search. There are several ways to search using RubyMine. The methods I use most frequently are:

Recently Edited files

Cmd + E

Command key + e will let you search your recent files which is pretty useful since in my projects I go through almost the same files everytime.

Search File Name

Cmd + Shift + N

Cmd + Shift + N will let you search your entire project without having to look at the file tree. I love this because you can search by name or extension file and if you don’t know the name but remember part of it, just enter a fraction of the name file and RubyMine will do its magic (yes, Atom and Vs code has something similar).

Shortcuts

RubyMine is super keyboard friendly; everything has a shortcut and if you come across something you want and don’t have you can always add a new one. In my case I wasn’t happy using the mouse to split views and the default interferes with a default mac screen setting.

my shortcut Cmd + Opt + V

So I added Cmd + Opt + V to split views vertically and along the same vein, another shortcut I made is Fn + Ctrl + arrow left or right to navigate through my open tabs.

Cmd + 9

Cmd + 9 another one of my faves displays version control where you can browse through your git history with a very nice GUI.

Cmd + K

Finally, since I don’t like typing that much, here comes Cmd + K to the rescue for not only committing but also adding file changes to version control without having to reach for the terminal. From here you can select or deselect the files you want to add and/or commit. You can also see the changes in those files and add emoticons to your commit messages for a little bit of personal flair. :)

File Templates

Do you find yourself having to add Shoulda-Matchers, Database Cleaners, and Factory Girl quite often? Well let me tell you! Adding file templates in RubyMine is a breeze…

Step1: Ctrl + N in your file tree where you want to add your file.

Step2: Go to Edit Template file

File and Code Templates

Step3: Add the name of the file, the extension and the code that you want to add to that file template when creating it. In my case I have file templates for DB cleaners, Factory Girl, Rspec Test files, Rails helper and many more.

Live Templates

This feature made my life easier in Mod 3 @Turing School. I found myself having to type the same snippet of code over and over again. Don’t get me wrong, when coding, typing the same thing will allow you to build muscle memory but after the 20th time I think you’re good.

In my case, in mod 3 I had to connect to APIs somewhere around 50 times during the period of 6 weeks, maybe I’m exaggerating but again I don’t like to type.

So for example, now when I need to add the snippet of code below I will start typing @conn hit Tab key and the snippet will populate in my editor like this:

@conn = Faraday.new(url: "api_url_goes_here") do |faraday|
    faraday.headers["X-API-KEY"] = "API_KEY_GOES_HERE"
    faraday.adapter Faraday.default_adapter
  end

  response = @conn.get("2nd_piece_of_api_url")

  results = JSON.parse(response.body, symbolize_names: true)

And just as simple as that you can create as many as you want!

Step1: go to Preferences or Cmd +, inside RubyMine

Step2: select Editor > Live Templates

Live templates

From here you will see a list of already populated templates and you just add your own. Just fill in the Abbreviation (how you want to fire up your template), Description and Template text (snippet of code that you want to add) and that is it, no more typos when trying to connect to an API using Faraday.

Reword

This might rock your world! Literally! Have you ever needed to change a commit, maybe you realize you weren’t too descriptive or simply you made a mistake and your code says one thing but you committed another? Well, in that case, Cmd + 9 to version control hover over the commit you want to change and right click on Reword.

Reword

From there you can undo the commit, revert the commit, reword, etc.

Reword Commit

In the pop-up simply add a descriptive commit message that reflects your work. The only gotcha is it will not work after pushing to remote.

Last but not least,

Looks

RubyMine its absolutely, in my opinion gorgeous. Yes I had to do some tweaking here and there especially with the colors for classes, methods, strings, etc. Colors that suited my aging eyes better and when coding I try to keep a minimalistic approach. No tool buttons, tool bar, status bar, nothing. The one thing I keep is the navigation bar, because I always like to know under which directory I am at the moment.

Additionally, you can improve the aesthetics of the interface with a plugin that I added called Material UI theme. It has quite a few options, for instance, I have enabled the darker theme. This theme comes with nicer file icons than default in RubyMine.

Editor window

Nice Features

RubyMine has excellent Cucumber support, and many others like:

By the way, if by any chance you are going to be working with files like yaml or haml, guess what? RM recognizes their syntax. It just works no need to be adding extra plugins.

Which brings me to my last point, you can add plugins and extra features to code editors and maybe at some point make it behave like an IDE, but the performance falls short of my expectations for normal actions that work in RM right out-of-the-box with no extra settings. That way I can focus on coding not in searching plugins.

With all these wonderful features, there is one thing that I don’t like about RM is the startup time. It’s like 2 extra seconds longer than a more simple editor, but I know that no code editor is perfect and no IDE is perfect, so for the time being I’m happy. I’m willing to sacrifice the start-up time. For now. RM has become faster in the later releases and hopefully it will keep improving.