---
title: "Making debugging with puts cool again"
publication: "Ruby Weekly"
issue: 706
published_at: "2024-06-06"
canonical_url: "https://rubyweekly.com/issues/706"
---

Plus a 19 year old Ruby framework checks in with an update. |        

#​706 — June 6, 2024 

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

Together with [![FastRuby.io\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_467,h_106/e_make_transparent/co_white,e_outline:14/y65nyff19ylf5udphsq4.png)](https://go.fastruby.io/du2)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/s2lb1qmzglwfi53qvkdq.jpg)](https://blog.rubygems.org/2024/05/30/bundler-auto-install-just-got-a-whole-lot-better.html)  

[Bundler Auto-Install Just Got a Whole Lot Better](https://blog.rubygems.org/2024/05/30/bundler-auto-install-just-got-a-whole-lot-better.html) — Bundler has a handy new feature. As of Bundler 2.5.10, you can now enable the `auto_install` config to have Bundler automatically install your bundle on demand, which might be particularly handy when working on a project with others. 

Ngan Pham (RubyGems)   

[Omakub: DHH's 'Omakase' Developer Setup for Ubuntu 24.04](https://omakub.org/) — DHH, no stranger to specifying his preferred conventions generally, now has a script that will turn an Ubuntu machine into a _“modern web development system.”_ On the menu are dotfiles, a terminal workspace, your choice of VS Code or LazyVim, and more. And is there a DHH screencast showing it all off? Of course! 

David Heinemeier Hansson   

💡 In other DHH news, he's written about [why he 'retired from the tech crusades.'](https://world.hey.com/dhh/why-i-retired-from-the-tech-crusades-107a51ea) Even if DHH isn't your cup of tea, this is one of his nicer posts. _"Programming is a beautiful game,"_ he says, encouraging us all to share whatever it is that works for_us._  [![\](https://copm.s3.amazonaws.com/e473cff7.png)](https://go.fastruby.io/du2) 

[🚀 Need an Action Plan to Upgrade to Rails 7.2 and Ruby 3.3?](https://go.fastruby.io/du2) — The Roadmap by [@FastRubyIO](https://x.com/FastRubyIO): Discover the work and effort it takes to upgrade and ensure security compliance. Backed by [30,000+ hours on upgrades](https://www.fastruby.io/blog/is-it-expensive-to-upgrade-rails.html#:~:text=We%20have%20invested%20more%20than%2030%2C000%20hours%20in%20total%20in%20upgrading%20Rails%20applications%2C%20having%20completed%20more%20than%20100%20upgrade%20projects.%20In%20this%20article%2C%20we%E2%80%99ll%20leverage%20our%20historical%20data%20and%20what%20we%20learned%20to%20help%20you%20answer%20this%20question%3A%20How%20much%20will%20this%20cost%3F), your zero-downtime upgrade journey begins here. Know how long it will take before you begin. 

FastRuby.io | Upgrade Services sponsor   

[Puts Debuggerer 1.0: Classic Debugging, But Better](https://andymaleh.blogspot.com/2024/05/puts-debuggerer-100-includes-invoked.html) — Inspired by Aaron Patterson’s [‘I am a puts debuggerer’](https://tenderlovemaking.com/2016/02/05/i-am-a-puts-debuggerer/) post, Andy has created a ‘guilt-free’ `puts`-style debugging gem that prints out much more useful information than `puts`/`p` (or even [Amazing Print](https://github.com/amazing-print/amazing_print)) alone. 

Andy Maleh   

[A Quick Intro to Endless Methods](https://allaboutcoding.ghinda.com/endless-method-a-quick-intro) — No, not those 500 line behemoths we’ve all had to maintain one time or another 🫣.. but Ruby 3.0’s one line methods that don’t require an explicit `end`. 

Lucian Ghinda   

- 📅 [Rocky Mountain Ruby 2024](https://rockymtnruby.dev/) takes place this October in Colorado, and [their CFP is open](https://sessionize.com/rocky-mountain-ruby/) for a few more weeks if you'd like to speak.
- ✅ Don't forget to [take the 2024 Ruby on Rails Community Survey.](https://railsdeveloper.com/survey/)
- ∑ Ruby's RBS type signature mechanism is [now at version 3.5](https://github.com/ruby/rbs/wiki/Release-Note-3.5) with a variety of enhancements and [signature updates](https://github.com/ruby/rbs/releases/tag/v3.5.0) for many core Ruby classes.
- 📕 Stephen Margheim is my current expert of choice for all things SQLite/Rails related, so it's great to see he has [his new _SQLite on Rails_ book](https://fractaledmind.gumroad.com/l/sqlite-on-rails) out. _(Yes, it costs money.)_  

📄 Articles, Tutorials & Videos 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wlzaszb1u6fo4cwgrgoc.jpg)](https://thoughtbot.com/blog/3-mental-models-for-ruby-enumerators)  

[3 Mental Models for Ruby Enumerators](https://thoughtbot.com/blog/3-mental-models-for-ruby-enumerators) — If you struggle with grokking the `Enumerator` class or distinguishing it from the `Enumerable` module, these models may help you iterate like a boss. 

Joël Quenneville (Thoughtbot)   

[The Old vs New `case` Statement](https://blog.jez.io/case-when-in/) — `case`/`when` being the classic approach, and `case`/`in` taking the pattern matching route. 

Jake Zimmerman   

[Register Now: Optimizing Slow Queries with EXPLAIN to Fix Bad Query Plans](https://us02web.zoom.us/webinar/register/3917168251135/WN_Zl7XR5DeQ1qkFfyWlMu-6Q) — This webinar is geared towards practitioners that work with Postgres, either as an app dev, or as part of the DB or infra team. 

pganalyze sponsor   

[Lesser Known Rails Helpers to Write Cleaner View Code](https://railsdesigner.com/lesser-known-rails-helpers/) — Including `class_names`, `safe_join`, `excerpt`, `to_sentence`, and several others. 

Rails Designer   

[A Trick for Invariant Generics in Sorbet](https://blog.jez.io/invariant-type-member-trick/) — _“There’s a neat trick for using generic methods to get around some of the limitations that invariant type members in generic classes carry.”_ 

Jake Zimmerman   

[Why Ruby’s `Timeout` is Dangerous (and `Thread.raise` is Terrifying)](https://jvns.ca/blog/2015/11/27/why-rubys-timeout-is-dangerous-and-thread-dot-raise-is-terrifying/) — This dates from 2015, believe it or not, but provoked some fresh discussion on social media this week. 

Julia Evans   

[How to Build and Deploy a Telegram Bot with Kamal](https://kyrylo.org/telegram/kamal/2024/06/01/how-to-deploy-a-telegram-bot-with-kamal.html) — Note that the bot is written in _Go_ (yes, we have [a newsletter](https://golangweekly.com/) for that), but it’s neat to see Ruby’s own Kamal being used in the deployment. 

Kyrylo Silin   

📄 [Compress Your Images](https://andycroll.com/ruby/compress-your-images-using-github-actions/) – Optimizing the size of images is good, and you can automate it with a GitHub Action. Andy Croll 

📄 [Why is Redirect Logic Always So Complex?](https://thedailydeveloper.substack.com/p/why-is-redirect-logic-always-so-complex) – _“and what can we do to address it?”_ Dave Paola 

📄 [Things You Wish You Didn't Need to Know About S3](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) Daniel Grzelak 

📄 [How to Use Tailwind CSS for Your Rails Project](https://blog.appsignal.com/2024/06/05/how-to-use-tailwind-css-for-your-ruby-on-rails-project.html) Thomas Riboulet 

📄 [A Testing Anti-Pattern: Accessing Private Properties](https://www.codewithjason.com/testing-anti-pattern-accessing-private-properties/) Jason Swett  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bmbcilvpjbh0nwbniqh7.jpg)](https://github.com/aidewoode/wahwah)  

[WahWah 1.6: A Library for Reading Audio Metadata](https://github.com/aidewoode/wahwah) — Think things like MP3 IDv3 tags, embedded images, and similar metadata in formats including MP3, M4A, OGG, OGA, OPUS, WAV, FLAC, etc. Pure Ruby too, with no dependencies. 

Aidewoode   

[MemoWise 1.9: A Modern Choice for Ruby Memoization](https://github.com/panorama-ed/memo_wise) — Prepend this to your classes and get access to some helpers to make memoization as easy as pie. 

Panorama Education   

[What’s a “Noisy Neighbor”, and What Can You Do About It?](https://judoscale.com/guides/noisy-neighbors-fixed?ref=RubyWeekly) — It’s maddening! You didn’t change a thing, but your app is randomly slowing down. It’s not you, it’s them. 

Judoscale sponsor   

⛺ [Camping 3.2: One of Ruby's Oldest Web Frameworks](https://github.com/camping/camping) — You don’t get many Ruby projects with git commits from _19 years ago_, nor many that were originally created by _why the lucky stiff_. Camping is, however, still maintained and its minimalist, composable concepts have aged well. 

Various Contributors   

[Blind Index 2.5: Securely Search Encrypted Database Fields](https://github.com/ankane/blind_index) — Works with both [Lockbox](https://github.com/ankane/lockbox) and `attr_encrypted`. 

Andrew Kane   

- ⚡ [High Voltage 4.0](https://github.com/thoughtbot/high_voltage) – Include static pages in your Rails app. It's in _maintenance mode_, but this release add Rails 7.1 support.
- [Kamal 1.6](https://github.com/basecamp/kamal/releases/tag/v1.6.0) – The container-based app deployer. Notably the healthcheck step during deployment has been removed.
- [PostgreSQLCursor 0.6.9](https://github.com/afair/postgresql_cursor) – Extends Active Record for more efficient processing of queries by using Postgres cursors.
- [rbspy 0.21.0](https://github.com/rbspy/rbspy) – Sampling CPU profiler for Ruby processes. Now with Ruby 3.1.6 and 3.3.2 support.
- [attr_encrypted 4.1](https://github.com/attr-encrypted/attr_encrypted) – `attr_accessor`s but with encryption and decryption.
- [Elasticsearch Rails 8.0](https://github.com/elastic/elasticsearch-rails/releases/tag/v8.0.0) – Elasticsearch integrations for ActiveModel/Record.
- [Passwordless 1.7](https://github.com/mikker/passwordless) – Rails magic link auth _sans_passwords.
- [UserAgentParser 2.18.0](https://github.com/ua-parser/uap-ruby) – User agent string parser.
- [Ruby Polars 0.11](https://github.com/ankane/ruby-polars) – Fast DataFrames for Ruby.         

Curated by [Peter Cooper](https://twitter.com/cooperx86) 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/).
