#446 — April 18, 2019

Read on the Web

Ruby Weekly

First Impressions of Ruby 2.7's Pattern Matching — Enjoy this ‘sneak peek’ at what pattern matching looks like in the forthcoming Ruby 2.7. It’s essentially an extension to case using in instead of when.

Brandon Weaver

Approximating “Prettier for Ruby” with RuboCop — The folks at Flexport have open-sourced some “cops” (RuboCop plugins) to bring Prettier-style autocorrection to Ruby. (Although, as we’ve reported recently, there is also a Ruby plugin for Prettier itself.)

Max Heinritz

Automate Your Code Reviews — Take the hassle out of shipping quality code - Codacy flags errors so you can fix them quickly. Address security concerns, code duplication, code complexity, drops in coverage, and more, directly from your current workflow. Get started today.

Codacy sponsor

Optimizing Database Performance in Rails — Some Rails and Heroku tools to help clean up slow database issues including a quick look at caching.


Searchkick 4.0: Intelligent Search for Ruby Webapps — A very mature library that uses Elasticsearch to provide ‘smart’ search that learns from what your users are searching for.

Andrew Kane

How Do You Know If A Gem Is "Done" or "Dead"? — Here’s an interesting discussion around how tools like RubyToolbox should indicate if a gem is still “active” and what that means so we can avoid dead gems in our apps.

The Ruby Toolbox

💻 Jobs

Senior Ruby Developer at Arsenal (Remote) — We're using machine learning to help get the best photos possible with DSLR or mirrorless cameras.


Backend Engineer at Splitwise (Providence/Greater Boston) — Splitwise helps millions of happy users in 170+ countries manage shared expenses with friends and family. Come help us scale.


Find A Ruby Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.


📘 Articles & Tutorials

Prevent Links in Text Fields to Foil Spammers — If your app turns user input into emails at all, you might want to avoid allowing URLs in, since many email clients will link them by default.

Andy Croll

Working with Dynamic JSON Attributes in Rails — Including performing validations on them.

Tom Rothe

Founders/CTOs: We Upgrade Rails So That Your Team Doesn't Have To — With Rails 4.2 approaching end-of-life (when Rails 6 is released this month), the time to upgrade is now.

Upgrade Rails sponsor

▶  How to Use JavaScript via Webpacker in Rails 6 — Rails 6 defaults to using Webpacker instead of the asset pipeline.

Go Rails

A Way to Validate and Fix Active Record Data Integrity — Thoughts on an approach to take if your data gets into an ‘invalid’ state (via arbitrary updates, skipping validations, broken dependencies, etc.)

Paweł Urbanek

▶  Discussing the Evolution of RubyMotion with Lori Olson — A 25 minute chat about RubyMotion, a toolkit for building cross-platform apps in Ruby.

The Ruby on Rails Podcast podcast

Ruby 2.6.3 Released — Includes some bug fixes, an update to the 12.1 Unicode beta and adds support for the new Japanese Era “令和” (Reiwa).

Yui Naruse

🔧 Code & Tools

pry-nav: A JRuby-Compatiable Way to Add Debugging Features to PryPry is a fantastic REPL, and if you’re using Pry but not using MRI, you’ll like this.

Gopal Patel

Licensed: Cache and Verify the Licenses of Dependencies — Currently being used at GitHub itself.


Spreadsheet Architect: Create Spreadsheets from Ruby Objects — A library to create XLSX, ODS, or CSV spreadsheets from Active Record relations, plain Ruby objects, or tabular data.

Weston Ganger

Get the Fastest Website Deployments

Buddy sponsor

resque-scheduler: A Lightweight Job Scheduling System Built on Top of Resque


An AWS Lambda Layer for the ruby-vips Gem — If you’re using ruby-vips for image processing and want to use it from a Ruby-powered AWS Lambda function, this will help.

Custom Ink

excon: A Fast, Simple HTTP 1.1 Client for Ruby — Has just had its first update in a year.


Textbringer 1.0: An Emacs-Like Text Editor Written in Ruby — It’s just reached version 1.0. Congratulations, Shugo.

Shugo Maeda