#452 — May 30, 2019

Read on the Web

Ruby Weekly

Working with Tests That Sometimes Fail — Nothing is certain but death and taxes.. and tests that begin to fail over time in mature software projects! Sam, who works on the popular Discourse forum project, looks at how Discourse’s tests have failed over time and how they handle them.

Sam Saffron

▶  RailsConf 2019 Videos — Confreaks have done their usual fantastic job in recording RailsConf (which was 4 weeks ago) and already have 67 videos up for us to enjoy. We'll be linking to more talks in future issues, but a particular highlight was Chris Salzberg's 'The Elusive Attribute' talk which wandered deep into the worlds of Active Record and Active Model.

WAFL: A Scalable MVP Alternative — WAFL stands for “Well Architected, Functionally Limited.” The idea behind a WAFL is to create (or recreate) the basic functionality of a project in a codebase that can scale.

CircleCI sponsor

VCR 5.0: Record Your Test Suite's HTTP Interactions and Replay Them — A very long standing library for recording HTTP interactions and replaying them during testing (so that your tests aren’t relying upon brittle third party services). The project is seeking maintainers but the first release in over a year is just out.


▶  How GitHub Handled Upgrading Rails — Eileen M. Uchitelle, Senior Software Engineer at GitHub and Rails core team member, talks about her work in upgrading GitHub from Rails 3.2 to 5.2 and why teams should be upgrading to Rails 6 now.

Maintainable Podcast podcast

Ruby 2.7 Adds Enumerable#filter_map — It’s basically shorthand for select and map in a single call, but also provides a minor speed up from the current ways you’d do the same thing. Check out the examples.

Vipul A M

Ruby Conf Taiwan 2019, July 26-27 — Keynote speakers include Matz, Aaron Patterson, c9s and Samuel Williams, along with 20 other fantastic speakers from the Ruby world.

Ruby Conf Taiwan 2019

💻 Jobs

Full Stack Web Developer - Roadtrippers (Cincinnati, OH) — We're looking for problem solvers to help us write code that simplifies the complexities of travel planning & discovery at scale.


Sr. Software Engineer - Rails (Seattle, WA) — You get it done with Rails, have strong programming fundamentals, are adaptable, and ready to jump in anywhere. Leafly is looking for you.


Find a Ruby Job on Vettery — Vettery specializes in tech roles and is completely free for job seekers.


📘 Articles & Tutorials

Measuring Rails' Overhead — How much overhead does Rails add over a pure Rack application? And how much does this change between Ruby versions?

Noah Gibbs

▶  Working with Google Sheets from Ruby — It feels like you have to jump through several hoops to work with Google’s APIs from Ruby but this 6 minute screencast makes it look simple.


4 Lesser Known Ways to Use Ruby’s Enumerable Module — A couple of the tricks here are new in 2.6, such as endless ranges & the shorter step syntax (%).

Josh Dzielak

Inside Enumeration in Ruby — Build your own linked list from the ground up by reproducing both an Enumerable module and an Enumerator class of your own.

Jeff Kreeftmeijer

Track Requests to Your Ruby Apps End-To-End with Datadog APM

Datadog APM sponsor

Managing Multiple Databases in Rails 6 — How to manually and automatically route queries to replicas in Rails 6.

Lukas Fittl

▶  JRuby's Road to Ruby 2.6 and Rails 6 — How JRuby is addressing startup time issues, why it’s great for Rails, where TruffleRuby fits in, how to move from MRI to JRuby (jruby_lint, ftw!), and more.

Charles Nutter and Thomas E Enebo

▶  A Look at Ruby 2.7 JIT's Real World Performance Improvements — A talk from RailsConf 2019 that looks at the performance improvements Ruby 2.7’s ‘MJIT’ could deliver. Technical and in-depth, this video has a limited audience but is interesting nonetheless.

Takashi Kokubun

🔧 Code & Tools

Chartkick: Beautiful JavaScript Charts in One Line of Ruby — See some examples, along with code, here.

Andrew Kane

Rumale: A Machine Learning Library in Ruby — Formerly known as SVMKit, it offers a Scikit (from Python) like interface. Cute logo!

A. Tatsuma

Safely Roll Out New Features in Ruby with Optimizely Rollouts — Ship faster with less risk. Get free feature flags to instantly turn on or off features without deploys.

Optimizely Rollouts sponsor

Ahoy: Simple Analytics for Rails Apps — Track visits and events in your app. By default, data is stored in your usual database.

Andrew Kane

Redlock: A Redis-Based Distributed Lock Implementation in Ruby

Leandro Moreira

TTY::Spinner: A Terminal Spinner for Tasks with an Unknown Completion Time — Use this alongside TTY to demonstrate to users that something is still happening.

Piotr Murach

Eucalypt: A New Sinatra App Generator — It’s early days for this, but as a Sinatra fan myself, it’s great to see more tooling appear around it.