#506 — June 18, 2020

Read on the Web

Ruby Weekly

SimpleDiscussion: A Simple, Extensible Rails Forum — If Discourse is a bit on the heavy side for you, you might find this simple forum software extracted from GoRails of interest.

Chris Oliver

Spark Joy by Running Fewer Tests — Tests are slow and sometimes people feel they can impact the joy of coding, but in many cases they’re necessary. Shopify experimented with using dynamic analysis to reduce the tests run on each PR and reclaimed some ‘joy.’

Jessica Xie (Shopify)

Building Admin APIs for Rails Apps — From REST to gRPC to Unrestful. Our journey to build an Admin API for our Rails application.

Cloud 66 sponsor

Monolithic Ideas For AWS Lambda File Systems — AWS Lambda has just added support for mounted file systems (using AWS EFS) on Lambda functions, so why not create a FileStore Cache for your Lambda-hosted Rails app?

Ken Collins

Shoulda 4.0: Making Tests Easy on the Fingers and Eyes — Shoulda is a very long standing test helper library (it’s over 12 years old) so it’s great to see it still putting out major releases. Congrats!

thoughtbot, inc.

⚡️ Quick bits:

  • Sadly the Travis Foundation is likely to shut down soon, and with it the Rails Girls Summer of Code project.
  • So Basecamp (y'know, the place that invented Rails) have unveiled their new Hey.com email system, and delightfully it's just progressively enhanced HTML delivered 100% over the wire and backed by Ruby, of course.

💻 Jobs

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


Announcing a 100% Remote Opportunity as a Sr. Ruby on Rails Dev — We are passionate about giving devs the chance to do meaningful work by building transformational technology solutions.


ℹ️ Interested in running a job listing in Ruby Weekly? There's more info here.

📘 Articles & Tutorials

Taming Legacy Code with Characterization Tests — Characterization tests help you document existing code behavior in preparation for changing that code without regressions.

José M. Gilgado

▶  Adding Multiuser Live Video Chat to a Rails App — Unfortunately you’re not going to build an entire video conferencing system of your own in 20 minutes, but you can add on a third party one, as demonstrated here.

Chris Oliver

Rails 6.1’s ActiveModel Errors Revamp — The various ways to access mpdel errors are moving from a hash-like interface to a data structure that removes internal sync errors and is more object-oriented. This is a good thing.


Allowing Dots in Rails Routes — The default regex used to match routes won’t allow dots, so here’s how to fix that.

Prathamesh Sonpatki

▶  Testing Your Deployment Pipeline with Adam Hawkins — You can not only test your application code, but also your deployment pipeline to mitigate the risk of a bad deploy taking your app down. 42 minutes.

Rails with Jason Podcast podcast

Download The Complete Guide to Upgrade Rails (Free eBook) — Upgrade your application and take advantage of Rails' latest features, performance upgrades, and security patches.

FastRuby.io | Rails Upgrade Services sponsor

Using Service Objects in Ruby and Rails — Find out what service objects are and why you should use them.

Nicholaus Haskins

Running a Patched Ruby on Heroku — If you’re lucky, you’ll not need to do this, but if you do..

Mauro Morales

Evaluating Go's Package Management and Module Systems — It’s about Go but aimed at Rubyists considering Go. Go doesn’t have a “package manager” in the traditional sense but modules help cover similar ground and this tutorial shows how. (And if you do end up using Go, we have a newsletter for that!)

Ayooluwa Isaiah

Redis Lua Scripting for Library Writers — Lua is a popular, lightweight, embeddable language and it’s used by the Redis in-memory data structure store. This post demonstrates a way to load in Lua scripts to a Redis server on the fly from Ruby.

Wander Hillen

▶  Discussing Past Rubies and Rails History with Nick Schwaderer

Remote Ruby Podcast podcast

How to Create Events in a Google Calendar from a Rails App

Parthiv Patel

🛠 Code and Tools

Inkblot: A Way to Interact with Waveshare e-Paper Displays from Ruby — A showcase of Inkblot, a gem for interacting with the Waveshare line of e-paper displays from the Raspberry Pi.

Justin Piotroski

ruby-docker-skeleton: A Skeleton for Creating an App That Can Run in Docker, Podman, and the Shell — Includes some Prometheus bits, as well.

Sebastian Thörn

Track Ruby App Performance with Detailed Flame Graphs in Datadog

Datadog sponsor

ActiveType: Make Any Object 'Quack' Like an Active Record Object


GitHub::DS 0.5: Libraries for Working with SQL on top of Active Record — Made up of KV, a MySQL-backed key/value store, SQL for building and executing SQL queries, and Result to more resiliently work with result objects. Used heavily at GitHub itself.


childprocess 4.0: Cross-Platform Library for Managing Child Processes

Eric Kessler

puma-newrelic: Puma Stats Sampler for New Relic