Avatar of Patrick Clery

Patrick Clery

Staff Software Developer
Staff Software Developer ·
Shared insights
on
RubyMineRubyMineRailsRailsRubyRuby
in

RubyMine is my IDE of choice because no other IDE exists that is designed to be as powerful & specific to development in Ruby on Rails. Plus, it supports all the other languages as well, & with a full license you get access to the other language suites by Jetbrains.

As far as features, it has a full-featured debugger that synchronizes with the browser when running a rails server. The "Tool Windows" for Version Control & the Docker Add-On are also frequently used by me, and they're amazing. I have several code snippets and live templates that I use, Emmet plugin, the list goes on. It has every feature you can imagine with a stack of great plugins that are all very evolved since they're not just for RubyMine, but all of JetBrains suite of software.

If you are a Rails or Ruby developer, you absolutely must use this to make your development faster.

READ MORE
7 upvotes·2 comments·7.3K views
Justin Dorfman
Justin Dorfman
·
August 8th 2019 at 10:55PM

This is a great decision, Patrick! How long have you been using RubyMine? Also what IDE did you use before?

·
Reply
Patrick Clery
Patrick Clery
·
March 2nd 2020 at 4:58AM

Thanks, Justin!

Before RubyMine I was using Atom. I thought Atom was the best option... Then I was hired on a development team that used RubyMine. That's when I could see that RubyMine was much more stable and full of features than Atom (or even Visual Studio Code).

Those other IDEs were (at least at the time) a big mash of half-working third-party plugins and lacked that unified ecosystem you get with JetBrains.

·
Reply
Staff Software Developer ·
Migrated
from
macOSmacOS
to
DockerDocker

The problem I had was when on-boarding with new development teams, myself & other developers were challenged with configuring our desktops & laptops to match the server's Ruby environment.

When I heard of Docker, I immediately downloaded at least ten images that day & became a big fan.

Docker solved my developer team woes in future by sharing my own projects as Docker images when necessary.

My favorite feature of Docker, is that it has allowed us to wrap virtually any server or client on the internet into a container and share it. Having has immediately saved days or weeks of on-boarding for myself & other developers who have joined teams I've been on.

READ MORE
3 upvotes·1.8K views
Staff Software Developer ·

DBeaver is great for working with complex SQL queries (especially ones that use subqueries). You can break each subquery into tabs, work on them individually, analyze them, easily read the results in a visual spreadsheet, and even render a visual diagram of your database's schema so you can at-a-glance see how it's all connected.

READ MORE
2 upvotes·1.5K views
Staff Software Developer ·
Chose
RSpecRSpec
in

RSpec makes coding an app feel more like writing a book.

expect { User }.to have_attributes(:name) 
expect { Counter.increment }.to change { Thing.count }.by(1)

As a fan of domain-driven design, I like tools that give you a more specific language that fits what I'm doing: test-driven development.

Tools like MiniTest & Test::Unit often feel like a mix of readable code, and symbol-heavy code. You'll see raw ruby code: function definitions or class definitions, which require more cognitive complexity to understand what's going on.

RSpec, on the other hand, could be read by anyone, even non-technical people. MiniTest & Test::Unit especially become less readable when you consider the popularity of RSpec, and all the extensions such as GraphQL, ActiveRecord, etc.

Once you master RSpec (it's super easy & worth doing), it's easy to spend 80% of your development on specs, & have specs that are as lengthy as your code, because tests are very easy to write.

That doesn't mean they'll pass, though! :)

I highly recommend using RSpec to write your own matchers in your "domain-specific language" (DSL). If you're doing tests for an app that uses machine learning to detect images of pancakes, you'd want a custom matcher like:

subject { Pancake.new(flat: true)  }
it { should be flat }
it { should have_toppings(:syrup) }

Checkout an example of a custom matcher I made that checks object types to avoid security risks or bugs:

https://github.com/patrickclery/rspec-dry-types

READ MORE
patrickclery (Patrick Clery) · GitHub (github.com)
2 upvotes·1.2K views
Staff Software Developer ·
Shared insights
on
BootstrapBootstrapRailsRails
in

I choose Bootstrap to style my UI because it's friendly to other developers who want to make changes, it's free, it's a solid theme that fits most of the CMS I create with Rails

READ MORE
1 upvote·1.2K views