Ruby/Rails Digest #2: Uncle Bob Martin on TDD, RubyConfAU 2017 Videos, Patme Gem, and More

Dear Rubyists, here’s the second issue of our Ruby/Rails digest – featuring the most useful resources, gathered for you with love. This March, we’ve seen the release of a new Ruby gem, Patme, watched RubyConfAU 2017, found out Uncle Bob Martin’s opinion on TDD, and learned plenty of new things. Let’s see what we’ve prepared for you!

To Read

Using Database Replicas in Rails With Octopus Gem ‒ Read about a successful case of scaling up a Freeletics app with the Octopus gem.

ODBC and Writing Your Own ActiveRecord Adapter ‒ Read the story of how Localytics implemented an ODBC (open source database connectivity) adapter for ActiveRecord that’s compliant with the latest Ruby and Rails versions.

Chain RSpec Matchers for Improved Test Readability ‒ We all love Ruby code for its readability. Josh Clayton shares his insights on how to make your Ruby code even more readable by chaining RSpec matchers.

Prototypes in Ruby and the Strange Story of Dup ‒ Robert Pankowecki reveals his experience in removing duplications in Ruby by using prototypes.

Faster Rails: How to Check if a Record Exists ‒ Optimizing database queries is a common method of speeding up a Rails app. Read about how to optimize existence checks in your Rails app.

Setting Up OAuth2 Callbacks in Rails with HTTPS Offloading on Load Balancers ‒ Learn how to beat the “CSRF detected” problem in applications that use OAuth2 authentication.

Towards Faster Ruby Hash Tables ‒ An article about organizing and optimizing of hash tables in Ruby.

Understanding Ruby GC through GC.stat ‒ An explanation of how the Ruby Garbage Collector (Ruby GC) works.

A Rubyist’s Guide to Postgresql’s Explain ‒ A detailed guide to the explain function in Postgresql.

Refactoring Ruby: From Subclass to Registry ‒ After facing the challenge of implementing responsive images in a legacy Rails app, Codeminer’s team refactored their code and shared their findings.

50 Most Common Rails Mistakes: The Ruby Way ‒ Top 50 most common and critical mistakes made by Ruby developers.

To Watch

RubyConfAU 2017 ‒ In case you missed RubyConfAU, which took place this February in Melbourne, Australia, you’re welcome to watch the conference on YouTube from your cozy place. Topics discussed: Actors in Ruby! Why let Elixir have all the fun?; Open Source: Power and the Passion; Simple and Awesome Database Tricks; Defragging Ruby; Performance Optimization in Ruby; and more.

Ruby on Rails 5.1.0 Changes and New Features ‒ A screencast from DriftingRuby about all the changes in Ruby on Rails 5.1.0. – Yarn/Webpack, system tests with Capybara, and much more.

To Listen

Ruby on Rails Podcast 225: Capital-R Rubyist by ‒ Kyle Daigle hosts a Ruby on Rails podcast. This episode features talk of RailsConfAU 2017 and thoughts on being a Rubyist with a capital R.

RR 302: Web Security by Ruby Rouges ‒ In this podcast, Brian Hogan, David Kimura, and Charles Max Wood discuss web security and security in Rails in particular. Tune in to listen to a hot discussion!


Using Chef and Capistrano to Deploy a Rails Application on Ubuntu 16.04 ‒ RubyGarage’s developers write not only great code, but articles as well! Our Ruby/JS developer Kirill Shevchenko explains how to deploy a Rails app on Ubuntu 16.04 using Chef and Capistrano.

Concurrency Deep Dive: Multi-Process ‒ The first of three articles on concurrency in Ruby. Learn how to handle multi-process.

Reading Ruby Code: ROM - Exploration ‒ The third part of a trilogy on code reading that focuses on how the Container method works.

Google Spreadsheets and Ruby ‒ Sometimes Google spreadsheets can replace a database for your Rails app. This tutorial explains how to use the google_drive gem to handle reading, writing, and deleting data from a Google spreadsheet with just a few lines of code.

SOLID Object-Oriented Design Principles with Ruby Examples ‒ A tutorial on SOLID principles with examples written in Ruby.

Creating Powerful Command Line Tools in Ruby ‒ Instructions on making command line apps in Ruby.

Towards Minimal, Idiomatic, and Performant Ruby Code ‒ Find out how to write minimalistic and performant Ruby code. Detailed examples are included.

Micro-Optimizations Matter: Preventing 20 Million System Calls ‒ Following the topic of performant applications, here’s the article on micro-optimizations.

Principles of Effective Testing with Capybara ‒ A tutorial on how to make integration testing simpler and more efficient with Capybara.

N+1 Problem or Memory Problems: Why Not Solve Both? ‒ How to solve a common N+1 problem and optimize memory allocation.

ActionCable: The Missing Guide ‒ A concise article about the purpose and use of ActionCable.


Rails 5.1.0.rc1: Loving JavaScript, System Tests, Encrypted Secrets, and More ‒ The Rails community has already made more than 380 commits to Rails 5.1 since its release. The details of these changes are in the changelogs on GitHub.

Ruby 2.4.1 Released: What’s Changed ‒ The new version of Ruby, 2.4.1, includes bug fixes, updates to Onigmo, RubyGems, the documentation for rss/atom, and much more.

Ruby 2.4.1, Ruby 2.3.4, Ruby 2.2.7 ‒ March has been a fruitful month for Ruby updates. Details are in the changelogs.

Patme Gem - Elixir-Style Pattern Matching for Ruby Methods ‒ Patme is a gem for Elixir-style pattern matching in Ruby. However, the authors point out that Patme is experimental, and don’t recommend using it in production.

Emailinquire ‒ A library for email validation (formatting, typos, and one-time emails).

Uninterruptible allows you to update the socket-server with zero downtime.

Interferon  allows you to store alerts configuration in your code.


TDD Harms Architecture ‒ Uncle Bob Martin shares his opinion on a controversial question: “to TDD or not to TDD?”

Recommended Articles

57 Best Ruby Gems We Use at RubyGarage

by Vlad V., Maryna Z., Kirill S., Bohdan Ch. and Volodymyr O. 10741 views