---
title: "Running up that Roda.."
publication: "Ruby Weekly"
issue: 607
published_at: "2022-06-09"
canonical_url: "https://rubyweekly.com/issues/607"
---

Plus the tip of the week is back, and why GitLab still loves Rails. |        

[🇺🇦](https://war.ukraine.ua/) #​607 — June 9, 2022 

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

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/j1mbvhhtxhts68p49tex.jpg)](https://www.fullstackruby.dev/fullstack-development/2022/06/03/what-would-it-take-for-roda-to-win/)  

[What Would It Take for Roda to Win?](https://www.fullstackruby.dev/fullstack-development/2022/06/03/what-would-it-take-for-roda-to-win/) — The creator of the [Bridgetown](https://www.bridgetownrb.com/) site generator (which itself uses [Roda](https://roda.jeremyevans.net/) at its heart) explains why he’s such a huge fan of the popular routing-oriented webapp library and how it bridges the gap between small and larger Ruby webapps better than, say, Sinatra. 

Jared White   

['I Built a Ruby Parser'](https://mpov.timmorgan.org/i-built-a-ruby-parser/) — A story of a side project that led to [Natalie](https://natalie-lang.org/), an early-stage alternative Ruby implementation with ahead-of-time compilation, and the up-and-down journey of getting to something that works. (Natalie can already work with a reasonable subset of Ruby, as seen in an [example like this](https://github.com/natalie-lang/natalie/blob/master/examples/boardslam.rb).) 

Tim Morgan   [![\](https://copm.s3.amazonaws.com/73bcc955.png)](https://blog.appsignal.com/2022/04/27/logbook-team-discussion-and-full-incident-history.html?utm_source=ruby-weekly-sponsored&utm_medium=email&utm_campaign=2022-04-27) 

[AppSignal Logbook: Team Discussion and Full Incident History](https://blog.appsignal.com/2022/04/27/logbook-team-discussion-and-full-incident-history.html?utm_source=ruby-weekly-sponsored&utm_medium=email&utm_campaign=2022-04-27) — With Logbook you get the full incident history. Read and leave team comments, see which notifications were sent at what time, and see team activity for changes in incident states. It's easier than ever to see what the current state of an incident is. 

AppSignal sponsor   

[Why GitLab is Sticking with Rails](https://thenewstack.io/why-were-sticking-with-ruby-on-rails-at-gitlab/) — The CEO of the popular git forge/devops platform reflects on why GitLab started with Rails (despite its founder coming from a PHP background) and why maintaining a ‘modular monolith’ continues to make sense for them. 

Sid Sijbrandij   

[Sidekiq 6.5: Simple, Efficient Background Processing](https://github.com/mperham/sidekiq) — [6.5.0](https://github.com/mperham/sidekiq/blob/main/Changes.md#650) features refactoring of Sidekiq’s internals, beta support for `redis-client`, and beta support for DB transaction-aware clients. 

Mike Perham   

**Quick Bits:** 

- Want an automatically updated list of maintained Ruby versions? Hiroshi Shibata [points us](https://twitter.com/hsbt/status/1532170677431959552) to [this JSON file](https://cache.ruby-lang.org/pub/misc/ci_versions/all.json) which he uses in [this GitHub Actions workflow](https://github.com/ruby/net-pop/blob/master/.github/workflows/test.yml#L13) for running tests across those versions. Smart.
- Do you use GitHub's Atom text editor? [They're 'sunsetting' it](https://github.blog/2022-06-08-sunsetting-atom/) as of this December.
- [RubyMine 2022.2 EAP3](https://blog.jetbrains.com/ruby/2022/06/rubymine-2022-2-eap-3/) is available, as is [RubyMine 2022.1.2](https://blog.jetbrains.com/ruby/2022/06/rubymine-2022-1-2-is-available/).
- It's no big surprise that if you rewrite things from Ruby to Rust, [you'll see huge memory efficiency gains](https://pen.so/2022/05/30/ruby-vs-rust-memory-usage/), but this observation provoked [an interesting Reddit thread](https://www.reddit.com/r/rust/comments/v3xgqp/rust_vs_rubyror_performances_for_api_calls/) about experiences writing things in Rust vs Ruby.
- Kelly Gebo from thoughtbot [shared some thoughts](https://thoughtbot.com/blog/thoughtbot-presentations-good-vibes-from-railsconf-2022) about, and talks from, the recent RailsConf 2022 in Portland, Oregon.     

Jobs  

[Ruby/React Full Stack Software Engineer (Paris or Remote)](https://bit.ly/3JATzy2) — Help us build a robust frontend and enhance the user experience on our contact center service used by top brands. 
RingCentral Engage Digital   

[Backend Engineer | Remote Within CET (-3/+3 Hours) | Full-Time](https://jobs.lever.co/qonto/284b8162-5293-4ad7-a9e6-4ad26ce0c516?lever-origin=applied&lever-source%5B%5D=Cooperpress) — Join us as a Backend Engineer to create the finance solution all businesses love - Tailor made remote policy or relocation package. 
Qonto   

[Senior Full Stack Engineer (Remote)](https://jobs.lever.co/polleverywhere/e815d75f-2325-4860-98a6-47433b880b35) — Help us in our transition from a collection of SPAs to a Rails+Hotwire application to rethink how modern real-time web-apps work. 
Poll Everywhere   

[Find Ruby Jobs Through Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-rubyweekly%29&utm_content=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired    

📕 Articles & Tutorials  

[Why Braintree Added Jitter to Active Job](https://medium.com/paypal-tech/thundering-herd-jitter-63a57b38919d) — Occasional spikes of failures led the Braintree team to a ‘thundering herd’ problem and why adding a little randomness to retry intervals calmed everything down. The results of this work [ended up in Rails 6.1](https://blog.saeloun.com/2020/03/04/rails-adds-jitter-to-activejob-exceptions-retry_on.html). 

Antross (Braintree / PayPal)   

[Adding Feature Flags to a Rails App with Flipper](https://blog.appsignal.com/2022/06/08/add-feature-flags-in-ruby-on-rails-with-flipper.html) — [Flipper](https://github.com/jnunemaker/flipper) makes it reasonably easy to turn features on or off for specific users or groups of users, enabling a more granular way of testing new features on your app without throwing everyone in at the deep end. 

Hans-Jörg Schnedlitz (AppSignal)   

[Couchbase Capella DBaaS: Store JSON, Query in Milliseconds](https://www.couchbase.com/products/capella/get-started?utm_source=cooperpress_ruby_weekly&utm_medium=newsletter) 

Couchbase sponsor   

[How to Query and Group Records by Duration in Active Record](https://thoughtbot.com/blog/query-by-duration-in-active-record) — How do you even save a “duration”, let alone query for records by that value? It’s easier than you think, says Steve. 

Steve Polito   

[Using Active Record with SQLite in a JRuby Desktop App](https://andymaleh.blogspot.com/2022/06/using-activerecord-with-sqlite-db-in.html) 
Andy Maleh  

🛠 Code & Tools  

[ActiveRecord::Summarize: Improved Efficiency for `.count` and `.sum` Queries](https://github.com/midnightmonster/activerecord-summarize) — An Active Record extension that transparently combines related `count`/`sum` queries so they can answered in a single pass. _“It’s like a `go_faster` block,”_ claims the docs, and hardly any changes are required to your existing code either. 

Joshua Paine   

[Strong Migrations 1.1: Catch Unsafe Migrations in Development](https://github.com/ankane/strong_migrations) — Detects potentially dangerous operations and prevents them running by default. 

Andrew Kane   

[Observability for Your Ruby Test Suites](https://buildkite.com/test-analytics?utm_campaign=CPress&utm_source=ppc&utm_medium=CPress&utm_term=test-analytics&utm_content=RubyWeekly) — Get instant, real-time visibility into the performance of your Minitest and RSpec tests with Buildkite Test Analytics. 

Buildkite sponsor   

[Phonelib 0.7: Validate Phone Numbers Using Google's libphonenumber Data](https://github.com/daddyz/phonelib) — Can perform basic validations and formatting checks on international phone numbers. 

Vadim Senderovich   

[cfndsl: A DSL for Generating AWS CloudFormation Templates](https://github.com/cfndsl/cfndsl) 
Steven Jack   

[Faraday HTTP Cache: Faraday Middleware That Respects HTTP Caching](https://github.com/sourcelevel/faraday-http-cache) 
SourceLevel      

💡**Tip of the Week**   

## Anonymous Block Forwarding 

Many of us have likely read or written Ruby code that takes a block argument and delegates it straight to another method. For example: 

```
def some_method(&block)
  other_method(&block)
end
``` 

We name a block argument `&block` (or something similar) just to forward that `&block` argument to another method. 

Last year's [Ruby 3.1 release](https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/) introduced [anonymous block forwarding](https://docs.ruby-lang.org/en/3.1/syntax/methods_rdoc.html#label-Block+Argument) when the argument is being passed to another method. This means that as of Ruby 3.1, you no longed _need_ to name the block parameter and can instead use `&`. Our example above becomes: 

```
def some_method(&)
  other_method(&)
end
``` 

If you're interested in adopting (or avoiding!) this style into your codebase, there's already [a RuboCop cop for it](https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Naming/BlockForwarding)!    

This week’s tip was written by [Jemma Issroff](https://twitter.com/jemmaissroff).          

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

[Change your email](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  

Other weekly newsletters we publish include [Postgres Weekly](https://postgresweekly.com/), [React Status](https://react.statuscode.com/), [Frontend Focus](https://frontendfoc.us/), and [JavaScript Weekly](https://javascriptweekly.com/).
