---
title: "Sparking ✨ joy ✨ by running fewer tests"
publication: "Ruby Weekly"
issue: 506
published_at: "2020-06-18"
canonical_url: "https://rubyweekly.com/issues/506"
---

Plus more of this week's Ruby news, views, and libraries.       

#506 — June 18, 2020 

[Read on the Web](https://rubyweekly.com/issues/506)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/ihyzxfxa3nw9zy4suqxp.jpg)](https://github.com/excid3/simple_discussion)  

[SimpleDiscussion: A Simple, Extensible Rails Forum](https://github.com/excid3/simple_discussion) — If [Discourse](https://github.com/discourse/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](https://engineering.shopify.com/blogs/engineering/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)   [![\](https://copm.s3.amazonaws.com/687f90f0.png)](https://blog.cloud66.com/building-admin-apis-for-rails-apps/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-q2-4) 

[Building Admin APIs for Rails Apps](https://blog.cloud66.com/building-admin-apis-for-rails-apps/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-q2-4) — 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](https://technology.customink.com/blog/2020/06/16/monolithic-ideas-for-aws-lambda-file-systems/) — AWS Lambda has [just added support](https://aws.amazon.com/blogs/aws/new-a-shared-file-system-for-your-lambda-functions/) 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](https://github.com/thoughtbot/shoulda) — 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](https://railsgirlssummerofcode.org/blog/2020-06-15-foundation-update), 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](https://hey.com/) email system, and delightfully [it's just progressively enhanced HTML](https://twitter.com/sstephenson/status/1272608117604397063) delivered 100% over the wire and backed by Ruby, of course.  

💻 Jobs  

[Find a Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-rubyweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77583) — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started. 

Vettery   

[Announcing a 100% Remote Opportunity as a Sr. Ruby on Rails Dev](https://www.clevertech.biz/careers/ruby-on-rails-engineer) — We are passionate about giving devs the chance to do meaningful work by building transformational technology solutions. 

Clevertech  

ℹ️ _Interested in running a job listing in Ruby Weekly? There's [more info here](https://booking.cooperpress.com/jobs)_. 

📘 Articles & Tutorials  

[Taming Legacy Code with Characterization Tests](https://www.honeybadger.io/blog/ruby-legacy-characterization-test/) — 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](https://gorails.com/episodes/multiuser-live-video-chat-in-rails) — 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](https://code.lulalala.com/2020/0531-1013.html) — 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. 

lulalala   

[Allowing Dots in Rails Routes](https://prathamesh.tech/2020/06/15/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](https://railswithjason.simplecast.fm/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)](https://www.fastruby.io/?utm_source=rubyweekly) — 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](https://blog.appsignal.com/2020/06/17/using-service-objects-in-ruby-on-rails.html) — Find out what service objects are and why you should use them. 

Nicholaus Haskins   

[Running a Patched Ruby on Heroku](https://www.mauromorales.com/running-a-patched-ruby-on-heroku.html) — 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](https://www.honeybadger.io/blog/golang-go-package-management/) — 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!](https://golangweekly.com/)) 

Ayooluwa Isaiah   

[Redis Lua Scripting for Library Writers](http://www.wjwh.eu/posts/2020-06-15-redis-eval-trick.html) — Lua is a popular, lightweight, embeddable language and it’s used by the [Redis](https://redis.io/) 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](https://remoteruby.transistor.fm/81) 

Remote Ruby Podcast podcast   

[How to Create Events in a Google Calendar from a Rails App](https://www.botreetechnologies.com/blog/how-to-create-events-in-google-calendar-from-ruby-on-rails-application) 

Parthiv Patel  

🛠 Code and Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/auljll0jwbyjbosc1uxv.jpg)](http://justinp.io/project/9)   

[Inkblot: A Way to Interact with Waveshare e-Paper Displays from Ruby](http://justinp.io/project/9) — A showcase of [Inkblot](https://github.com/jtp184/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](https://github.com/SebastianThorn/ruby-docker-skeleton) — Includes some Prometheus bits, as well. 

Sebastian Thörn   

[Track Ruby App Performance with Detailed Flame Graphs in Datadog](https://www.datadoghq.com/dg/apm/ruby-application-performance/?utm_source=Advertisement&utm_medium=CooperPress&utm_campaign=CooperPress-RubyWeeklyPerformanceB) 

Datadog sponsor   

[ActiveType: Make Any Object 'Quack' Like an Active Record Object](https://github.com/makandra/active_type) 

Makandra   

[GitHub::DS 0.5: Libraries for Working with SQL on top of Active Record](https://github.com/github/github-ds) — 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. 

GitHub   

[childprocess 4.0: Cross-Platform Library for Managing Child Processes](https://github.com/enkessler/childprocess) 

Eric Kessler   

[puma-newrelic: Puma Stats Sampler for New Relic](https://github.com/benoist/puma-newrelic) 

Benoist         

Curated by [Peter Cooper](https://twitter.com/peterc), [Glenn Goodrich](https://twitter.com/ruprict) and [Cooperpress](https://cooperpress.com/). 

[Change your email address](https://rubyweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
