---
title: "Ruby debugging tips for 2025"
publication: "Ruby Weekly"
issue: 743
published_at: "2025-03-20"
canonical_url: "https://rubyweekly.com/issues/743"
---

Plus TruffleRuby 24.2, OpenAI updates, and getting native extensions to behave. |        

#​743 — March 20, 2025 

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

Together with [![reinteractive\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_900,h_186/e_make_transparent/co_white,e_outline:9/goq5p4n0bj1gcxvxkfel.png)](https://reinteractive.com/service/code-care)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bvgxtooopdo1sddnpiyb.jpg)](https://railsatscale.com/2025-03-14-ruby-debugging-tips-and-recommendations-2025/)  

[Ruby Debugging Tips and Recommendations in 2025](https://railsatscale.com/2025-03-14-ruby-debugging-tips-and-recommendations-2025/) — A brief piece but packed with advice from Stan (who knows a thing or two from all his work on [debug.rb](https://github.com/ruby/debug) and modernizing IRB). Did you know you can use the Ruby LSP extension with `debug.rb`? 

Stan Lo   

[Ruby, Ractors, and Lock-Free Data Structures](https://iliabylich.github.io/ruby-ractors-and-lock-free-data-structures/) — An extensive, multi-chapter article that goes into serious depth about Ractors, lock-free data structures and shared mutable global state in multi-threaded Ruby apps. [There’s also code](https://github.com/iliabylich/ractors-playground) if you want to play along or experiment. 

Ilya Bylich   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/f335823d.png)](https://reinteractive.com/service/code-care) 

[Seamless Rails Upgrades: Fixed Price Maintenance](https://reinteractive.com/service/code-care) — Upgrading RoR can be daunting. Outdated gems, breaking changes, & limited resources often hinder smooth transitions. We offer expert Rails maintenance at a fixed monthly price, your application remains secure, performant, minimal business disruptions. 

reinteractive / CodeCare sponsor   

▶[Building an 'Always-On' Production Profiler](https://ivoanjo.me/blog/2025/03/19/building-an-always-on-production-ruby-profiler/) — A talk from Ruby Kaigi 2024 on Datadog’s production profiler. There’s a lot of detail here on how and what (CPU profiles, GC, allocations, heap live objects) to profile, various challenges of profiling in production, and using Rust in a gem. 

Ivo Anjo   

[Installing the `sassc` Gem on a Mac: A Debugging Story](https://www.schneems.com/2025/03/17/installing-the-sassc-ruby-gem-on-a-mac-a-debugging-story/) — Native extensions are often the source of a failed `bundle install` and never particularly fun to figure out (at least for me). Luckily, Richard takes us on a tour of the issues here, advice that could be useful beyond just `sassc`. 

Richard Schneeman   

[Creating Value Objects the Idiomatic Way](https://allaboutcoding.ghinda.com/how-to-create-value-objects-in-ruby-the-idiomatic-way) — If you’ve got a value more elaborate than a number, string or simple list or hash, you might choose to use a class to create objects that represent those values: value objects. The modern way to do this in Ruby is with [the `Data` class](https://docs.ruby-lang.org/en/3.2/Data.html) and Lucian shows it off here. 

Lucian Ghinda   

[Simple Declarative Presence for Hotwire Apps with AnyCable](https://evilmartians.com/chronicles/simple-declarative-presence-for-hotwire-apps-with-anycable) — How to implement user presence tracking in a Hotwire application with minimal effort by using AnyCable and its new primitives. 

Nazarova and Dementyev   

[Finding the Opposite of What You Have with Rails `invert_where`](https://thoughtbot.com/blog/finding-the-opposite-of-what-you-have-with-rails-invert_where) — Rails has so many helpful methods that many simply skip my radar as someone who’s been using Rails for so long. `invert_where` is certainly new to me and does something quite interesting.. 

Trésor Bireke   

[🚀 Need to Upgrade Ruby? Here is a Free Step by Step Guide by FastRuby](https://go.fastruby.io/step-by-step) — The team behind [Bonsai](https://www.fastruby.io/monthly-ruby-maintenance) and the [next_rails gem](https://github.com/fastruby/next_rails/?tab=readme-ov-file#next-rails) shares their best practices for upgrading to any Ruby version. 

FastRuby.io | Upgrade Services sponsor   

⭐ [The Ultimate Guide to Scaling Sidekiq](https://judoscale.com/blog/ultimate-guide-scaling-sidekiq) – Sidekiq’s creator gave it the thumbs up so it must be good. Adam McCrea 

📄 [Preserving Flash Messages in Rails](https://kevinjmurphy.com/posts/preserving-flash-messages-in-rails/) – Handy knowledge if you’re debugging why your flash messages aren't working as expected. Kevin Murphy 

📄 [Rails 8 Assets Series: A Dive into Propshaft](https://radanskoric.com/articles/rails-assets-deep-dive-propshaft) – How Rails 8’s default asset pipeline approach actually processes assets. Radan Skorić 

📄 [Better Stability with Rails Load Testing in Apache JMeter](https://www.honeybadger.io/blog/rails-load-testing-jmeter/) Milap Neupane (Honeybadger)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wfksmarbdcrue4zx3mhn.jpg)](https://just-the-docs.com/)  

[Just the Docs: A Jekyll Theme for Documentation Sites](https://just-the-docs.com/) — Only tangentially Ruby related (but it _is_ for [Jekyll](https://jekyllrb.com/)) but I love the look of docs/project sites using this. It’s clean, simple, and makes a lot of right design decisions for you out of the box. 

Patrick Marsceill   

[TruffleRuby 24.2: The High Performance Ruby Implementation](https://github.com/oracle/truffleruby/releases/tag/graal-24.2.0) — Now supporting Ruby 3.3.5 features, TruffleRuby is an interesting Ruby implementation based upon GraalVM (a variant of the JDK with ahead-of-time native compilation well suited for dynamic languages). 

Oracle   

💡 Benoit Daloze's [Matching Regexps 200 Times Faster](https://eregon.me/blog/2025/03/14/matching-regexps-200-times-faster.html) is an interesting article showing off just _how fast_ TruffleRuby is in a particular use case with an idiomatic pure Ruby solution being even faster than C code.  

[Confused About Request Queue Time?](https://judoscale.com/blog/request-queue-time?utm_source=ruby-weekly&utm_medium=newsletter&utm_campaign=request-queue-time) — Check out our illustrated guide, with diagrams galore and just a tiny bit of math. 

Judoscale sponsor   

[Psyllium: A Gem Making It Easier to Use Fibers](https://github.com/eestrada/psyllium) — Adds convenience methods to the `Fiber` class to make it easier to use in the same way that threads might be used. 

Ethan Estrada   

[iri: Simple Immutable Ruby URI Builder](https://github.com/yegor256/iri) — Offers an interesting chain-able fluent API for adding various elements to URLs. 

Yegor Bugayenko   

- 🤖 [Ruby OpenAI 8.0](https://github.com/alexrudall/ruby-openai) – A way to use OpenAI's APIs. v8 adds support for OpenAI's new _Responses_endpoints.
- 🤖 [OmniAI 2.1](https://github.com/ksylvest/omniai) – A standardized API for multiple LLM platforms.
- [xgboost-ruby 0.10](https://github.com/ankane/xgboost-ruby) – High performance gradient boosting for Ruby.
- [Steep 1.10](https://github.com/soutaro/steep/wiki/Release-Note-1.10) – Static type checking tool for Ruby.
- [RBS 3.9](https://github.com/ruby/rbs/wiki/Release-Note-3.9) – Ruby's type signature language.      

📰 Classifieds   

**Rails Paralysis? Query Analysis** [Scout Monitoring](https://www.scoutapm.com/ruby-monitoring/?utm_content=03-14-2025&utm_medium=cooperpress&utm_source=sponsorship) brings you detailed insights about app database usage with a five-minute install. 

--- 

⛽ [Supercharge your team with SINAPTIA!](https://sinaptia.dev/services/staff-augmentation/) We can augment your team with devs to help you keep up with your delivery schedule. [Test us!](https://sinaptia.dev/services/staff-augmentation/)    

📢 Elsewhere  

A quick roundup of some other interesting updates or useful resources in the broader developer landscape: 

- [mise-en-place (a.k.a. `mise`)](https://mise.jdx.dev/) is one of the more modern polyglot tool version managers and is being increasingly used by Rubyists to manage Ruby installs.
- [It's just 14 characters of JavaScript,](https://www.hillelwayne.com/post/javascript-puzzle/) but can you interpret it at first glance?
- Ever wondered what's involved in [building a container image from _scratch_?](https://danishpraka.sh/posts/build-a-container-image-from-scratch/)
- ["As an engineer, I’d rather be called stupid than stay silent."](https://shiftmag.dev/asking-questions-engineering-career-advice-4895/)         

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/).
