---
title: "Rails turns twenty"
publication: "Ruby Weekly"
issue: 714
published_at: "2024-08-01"
canonical_url: "https://rubyweekly.com/issues/714"
---

Plus a dive into ranges, multiplayer Minesweeper, and ERB linting. |        

#​714 — August 1, 2024 

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

🏖️ Hey! Just a quick note to say that we're taking next week off for a brief summer vacation. We'll be back with our next issue on August 15.
__
_Peter Cooper, your editor_  

Together with [![JudoScale\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_500,h_122/e_make_transparent/co_white,e_outline:9/uimgjqpabq3x7sq0q631.png)](https://judoscale.com/blog/how-many-dynos?ref=RubyWeekly)  

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/vzybyjt6pdocdvi6s0b1.jpg)](https://zverok.space/blog/2024-07-26-range-evolution.html)  

[How It Became Like This? Ruby's Range Class](https://zverok.space/blog/2024-07-26-range-evolution.html) — An exploration of one of Ruby’s core classes — specifically the `Range` type and its associated syntax, looking at how it works and how its behavior has evolved over time. 

Victor Shepelev   [![\](https://copm.s3.amazonaws.com/8544bfc3.png)](https://judoscale.com/blog/how-many-dynos?ref=RubyWeekly) 

[Developer’s Guide to Heroku Dynos](https://judoscale.com/blog/how-many-dynos?ref=RubyWeekly) — Which dynos should you use, and how many? (TLDR: Don’t use Perf-M!) 

Judoscale sponsor    

[Heroku Ruby Cloud Native Buildpack (CNB) Tutorial](https://github.com/heroku/buildpacks/blob/afc0ae95aee58572a761c05804d810bfa2241f88/docs/ruby/README.md) — A 2024 update for Heroku’s tutorial for building a Rails app image with no Dockerfile required. And, no, you don’t need to use Heroku to run or deploy it (indeed it runs locally). 

Heroku   

**IN BRIEF:** 

- 🎂 Ruby on Rails was first released in August 2004, making it twenty years old this month!
- The Ruby team has announced [two DoS vulnerabilities in REXML](https://www.ruby-lang.org/en/news/2024/08/01/dos-rexml-cve-2024-41123/) ([second one](https://www.ruby-lang.org/en/news/2024/08/01/dos-rexml-cve-2024-41946/)) and recommends upgrading to [REXML 3.3.3+.](https://github.com/ruby/rexml)
- [Ruby 3.2.5](https://www.ruby-lang.org/en/news/2024/07/26/ruby-3-2-5-released/) has been released due to the aforementioned REXML issues, but also includes other bug fixes for those on the 3.2 branch.
- It's great to see Lucian Ghinda's [Short Ruby newsletter has reached issue 100.](https://newsletter.shortruby.com/p/edition-100) It takes a different approach to us, focusing heavily on what Rubyists are discussing on Twitter.
- Did you know that as of Java 22 you can [run Java source files in a similar way to how you'd run Ruby?](https://mccue.dev/pages/7-27-24-you-can-run-java-like-python-or-ruby)
- ⌨️ After getting into Windows, Linux, and Vim, [DHH's next odyssey is mechanical keyboards.](https://world.hey.com/dhh/finding-acoustical-delight-in-the-thock-aa84f70b)  

📄 Articles & Tutorials 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mvyowerwmbegbm7m3gw2.jpg)](https://radanskoric.com/experiments/multiplayer-minesweeper-with-rails-and-hotwire)  

[Multiplayer Minesweeper with Rails and Hotwire?](https://radanskoric.com/experiments/multiplayer-minesweeper-with-rails-and-hotwire) — We recently featured a post about [implementing Minesweeper in 100 lines of Ruby](https://radanskoric.com/experiments/minesweeper-100-lines-of-clean-ruby), but what if we could make it _multiplayer?_ Radan pulls it off, with a live demo now up at [MinesVsHumanity](https://minesvshumanity.com/). There might be a game in action if you’re lucky.. 

Radan Skorić   

[Implementing Semantic Search in a Rails App](https://firehydrant.com/blog/semantic-search-with-ruby-on-rails/) — The idea is that you use OpenAI’s API to create embeddings of content, the [Neighbor gem](https://github.com/ankane/neighbor) to search them, and Anthropic’s Claude API for summarization. 

Robert Ross   

[🌳 Need to Upgrade to Ruby 3.3 on a Budget? Try Bonsai by FastRuby.io](https://go.fastruby.io/kmu) — Stuck on Ruby 2.7? Stop postponing your upgrade; ship it with our fixed-cost monthly maintenance service. 🚀 

Bonsai By FastRuby.io sponsor   

📄 [How to Use Stimulus in your Rails Apps with RubyMine](https://blog.jetbrains.com/ruby/2024/07/how-to-use-stimulus-in-your-rails-apps-with-rubymine/) Darya Sharkova 

📄 [Flaky Tests? Check your FactoryBot IDs](https://engineering.gusto.com/flaky-tests-check-your-factorybot-ids-694bf8b9dfea) Brooke Noonan 

📺 [Turbo Streaming: Broadcasting over WebSockets Explained](https://www.youtube.com/watch?v=4iCuPB3dhsM) Arkency 

📄 [Rails 7.2 Adds Support for Devcontainers](https://blog.saeloun.com/2024/07/31/rails-7-2-adds-support-for-devcontainer/) Prasanth Chaduvula 

📄 [Highlights from Git 2.46](https://github.blog/open-source/git/highlights-from-git-2-46/) Taylor Blau (GitHub)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/clccxoyhxfeu02udevbd.jpg)](https://github.com/SciRuby/iruby?tab=readme-ov-file)  

[IRuby: A Ruby Kernel for Jupyter Notebooks](https://github.com/SciRuby/iruby?tab=readme-ov-file) — [Notebook interfaces](https://en.wikipedia.org/wiki/Notebook_interface) make it easy to do literate programming where you see results immediately like a REPL but with persistence and control over the formatting of the source code. Common in the Python world, IRuby brings Ruby into the picture too. 

Ruby Science Foundation   

💡 Nithin Bekal also [wrote a tutorial on using IRuby](https://nithinbekal.com/posts/ruby-jupyter-notebooks/) last year.  

[ERB Lint: A Linter for ERB and HTML Files](https://github.com/Shopify/erb_lint) — Includes a variety of [default linting rules](https://github.com/Shopify/erb_lint?tab=readme-ov-file#linters) for detecting bad syntax, stray newlines, unauthorized script tags, and unsafe interpolation. 

Shopify   

[Your Fastest Path to Production](https://render.com?utm_source=cooperpress&utm_medium=cooperpress) — Build, deploy, and scale your apps with unparalleled ease – from your first user to your billionth. 

Render sponsor   

[ScreenRecorder: Record your Screen from Ruby](https://github.com/kapoorlakshya/screen-recorder) — It uses FFmpeg behind the scenes but is controllable from Ruby and might be something you’d want to integrate with an automated UI testing run, say. 

Lakshya Kapoor   

- [Mechanize 2.12](https://github.com/sparklemotion/mechanize) – Library to automate web interactions. v2.12 introduces experimental support for handling Brotli-compressed responses.
- [Passenger 6.0.23](https://blog.phusion.nl/2024/07/29/passenger-6-0-23/) – The popular app server improves its Rack 3 support.
- [Discourse 3.3](https://blog.discourse.org/2024/07/celebrating-discourse-3-3/) – The Rails powered forum system / community platform.
- [RBS::Inline 0.6](https://github.com/soutaro/rbs-inline) – Write RBS type declarations _inline_ with your code.
- [Solid Cache 0.7](https://github.com/rails/solid_cache) – Database-backed Active Support cache store.
- [Faraday 2.10.1](https://github.com/lostisland/faraday) – Flexible, multi-backend HTTP client library.
- [Torch.rb 0.17](https://github.com/ankane/torch.rb) – Libtorch-powered deep learning for Ruby.
- [Rage 1.7](https://github.com/rage-rb/rage) – HTTP API framework compatible with Rails.
- [Stripe Ruby 12.4](https://github.com/stripe/stripe-ruby) – Ruby library for the Stripe API.
- [ruby-pg 1.5.7](https://github.com/ged/ruby-pg) – The Ruby Postgres client.    

We're now away for a week but will be back on August 15 – see you then!         

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