Hello Ruby

When we first started planning work for Chime, the word “focus” came up a lot. We wanted to build something that blended modern IDE features with a minimalist user interface. Our goal was something you could just open and use, with no configuration required. To make this feasible, we had to restrict ourselves to just one language. Go was an obvious choice – we were already using it for service-side work.

Highlighting, Diagnostics and Type-Based Completions

But, Chime has evolved quite a bit since then. We’ve spent a lot of time iterating on the app, both in ways that are user-facing and internal. That work has had the nice side-effect of making it easier to expand Chime to support other languages. And, once we realized we could it, we started to feel like it was silly not to. So, we added support for Ruby!

How it Works

As it turns out, Ruby still ended up requiring a lot of work to support well. Everything was just different enough. Even something that might seem straightforward, like indentation, was a big technical challenge. Ruby projects can also have complex dependencies on configuration and the environment. Chime does its best to integrate with Bundler and your shell setup.

To drive some features, Chime uses the Solargraph language server and RuboCop. If you have used these tools with your project in the past, Chime should be able to just pick up your existing configuration. If not, we’ve tried to get things working for most projects transparently. We aren’t including support for Sorbet yet, but please let us know if this is something you’d be interested in.

More Open Source

Bringing a new language to Chime is a big deal. But, I’m especially happy with how much of the work here has been open sourced. We’ve done lots of work on our Language Server Protocol client. And, our tree-sitter client has seen a bunch of enhancements.

We’ve also released two entirely new projects! TextFormation is a rule-based system for typing completions and whitespace control. And, Neon is a system for working with language syntax built for efficiency.

I’ve being using Ruby for a very long time, so as part of testing I also worked on a little Rake file task extension.

Try it Out!

Adding a new language to Chime is a big thing for us, and we’re pretty excited. And it’s been a lot of fun to use Chime to actually write some Ruby! Chime 1.7 is available to download today and includes beta support for Ruby. Of course, our commitment to Go isn’t changing at all. We’ll still be building Go-specific features, we’ll now just be doing Ruby-specific stuff too.

So, give it a shot, and please let us know what you think!

Thu, May 12, 2022 - Matt Massicotte

Previous: MeterReporter: Lightweight MetricKit Diagnostics