---
title: "Ruby's evolution from 2.0 to 3.1"
publication: "Ruby Weekly"
issue: 612
published_at: "2022-07-14"
canonical_url: "https://rubyweekly.com/issues/612"
---

Plus 3D rendering in Ruby, how GitHub detects languages, and bringing React and Hotwire together. |        

🇺🇦 #​612 — July 14, 2022 

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

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/xwgryq0a96sjxkjlufqn.jpg)](https://rubyreferences.github.io/rubychanges/evolution.html)  

[Ruby Evolution: New Ruby Features Added in v2.0 through v3.1](https://rubyreferences.github.io/rubychanges/evolution.html) — Victor checks in from Ukraine (where Russia’s invasion continues –_[here are ways](https://linktr.ee/RazomForUkraine) you can help the Ukrainian people_) with a handy resource covering the key changes to the Ruby language in versions 2.0 onward. This is a fantastic way to check your knowledge of modern Ruby features and bring yourself up to date where needed. For example, did you know `File.readlines` has a built-in `chomp` feature now? 

Victor Shepelev   [![\](https://copm.s3.amazonaws.com/f061d4a5.png)](https://buildpulse.io?utm_source=rubyweekly&utm_medium=referral&utm_campaign=202207-rubyweekly) 

[Flaky Tests Slowing You Down? BuildPulse Can Help](https://buildpulse.io?utm_source=rubyweekly&utm_medium=referral&utm_campaign=202207-rubyweekly) — BuildPulse automatically detects and tracks flaky tests in your projects so you can stop wasting time chasing broken builds and get back to coding. To top it off, [BuildPulse](https://buildpulse.io/?utm_source=rubyweekly&utm_medium=referral&utm_campaign=202207-rubyweekly) works seamlessly with Ruby, and you can set it up in just a few minutes. 

BuildPulse sponsor   

[Strftimes Like These](https://strftimeslikethese.com/) — An online tool for experimenting with [`strftime`](https://ruby-doc.org/stdlib-3.1.0/libdoc/date/rdoc/DateTime.html#method-i-strftime) date/time formatting, but the interesting part is it runs _entirely in the browser_ with Ruby code running through WebAssembly (which is why it takes several seconds to load, alas). Behind the scenes is [Bormaŝino](https://github.com/keyasuda/bormashino), a tool for creating SPAs with WebAssembly-powered Ruby. [GitHub repo](https://github.com/bbonamin/strftimeslikethese). 

Bruno Bonamin   

**Quick Bits:** 

- Aaron sounds super excited but the [releases of Rails 7.0.3.1, 6.1.6.1, 6.0.5.1, and 5.2.8.1](https://rubyonrails.org/2022/7/12/Rails-Versions-7-0-3-1-6-1-6-1-6-0-5-1-and-5-2-8-1-have-been-released) are for quite sober security reasons and if you use YAML serialized columns with Active Record at all, you'll either want to update ASAP or [read more about the underlying issue](https://discuss.rubyonrails.org/t/cve-2022-32224-possible-rce-escalation-bug-with-serialized-columns-in-active-record/81017).
- Did you know the [Try Ruby](https://try.ruby-lang.org/) online Ruby sandbox-meets-tutorial (originally built by __why_) became an official part of the Ruby site? It's recently had a facelift and supports even more (natural) languages too. Thanks to Ivo Herweijer for highlighting this.
- This [Java to Ruby converter](https://kalkicode.com/ai/java-to-ruby-converter-online) is a curious bit of fun and a neat experiment. Idiomatic Ruby it ain't, though :-)
- The latest [monthly update from the RubyGems team](https://blog.rubygems.org/2022/07/08/june-rubygems-updates.html) is out. [RubyGems 3.3.18](https://blog.rubygems.org/2022/07/14/3.3.18-released.html) is the latest version.   

▶[Profiling-Guided String Representation Optimization in TruffleRuby](https://www.youtube.com/watch?v=U4gbftHGwDU) — A short (7-minutes), beautifully presented, but quite technical talk looking at the use of ropes for optimizing string storage in TruffleRuby. 

Veselin Karaganev   

▶[React and Hotwire Together: The Best of Both Worlds](https://www.youtube.com/watch?v=_w_S4J1q7ds) 
Cezar Halmagean (Mix & Go)   

[An Introduction to RSpec Mocks](https://www.honeybadger.io/blog/rspec-mocks/) 
Abiodun Olowode   

▶[Discussing the Lazy Loading of N+1 Queries](https://topenddevs.com/podcasts/ruby-rogues/episodes/speed-up-your-rails-app-by-lazy-loading-your-n-1-queries-ruby-554) 
Ruby Rogues Podcast podcast  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/ukuph33aagtkyqypdo7h.jpg)](https://github.com/danini-the-panini/mittsu)   

[Mittsu 0.4: A 3D Graphics Library for Ruby](https://github.com/danini-the-panini/mittsu) — A Three.js-inspired Ruby abstraction over OpenGL. Several years old but has just landed an update adding Ruby 3.1 support and antialiasing too. Just ran the [example](https://github.com/danini-the-panini/mittsu#tldr) on macOS without any complaints - very easy to get going. 

Danielle Smith   

[Build Your Work Portfolio with Other Rubyists on Polywork](https://www.polywork.com/product?utm_source=newsletter&utm_medium=cooperpress&utm_campaign=rubyist) — Connect with people based on real projects you've done and what they want to work on. 

Polywork sponsor   

[Rufus Scheduler: Thread-Based Task Scheduling within a Ruby Process](https://github.com/jmettraux/rufus-scheduler) — Got a job you need to run on a regular basis, or at a specific time, in your Ruby app? If your needs are reasonably modest and don’t need an entire, separate background job runner or cron job, this can be very handy. 

John Mettraux   

[CSV Lint 1.0: A CSV Validation Library](https://github.com/Data-Liberation-Front/csvlint.rb) — Validates basic formatting of CSV data, but can also validate against a schema. This gem also provides the functionality for [CSVLint.io](http://csvlint.io/), an online CSV tool. 

The Data Liberation Front   

[HTMLProofer 4.0: Test Your Rendered HTML Files](https://github.com/gjtorikian/html-proofer) — Test for things like image tags having alt tags and valid URLs, link and anchor elements having the right attributes, etc. 

Garen Torikian   

[Don’t Let Your Issue Tracker Be a Four-Letter Word. Use Shortcut](https://shortcut.com/?utm_source=cooperRubyWeekly&utm_medium=spon_nl&utm_campaign=prospecting&utm_content=fourletter) 

Shortcut (formerly Clubhouse.io) sponsor   

[RR 3.1: A Test Double Framework](http://rr.github.io/rr/) — Temporarily replace parts of your code during testing (like a stunt double, if you will). [GitHub repo](https://github.com/rr/rr). 

Brian Takita   

[Linguist: How GitHub Detects Programming Languages](https://github.com/github/linguist) — This project has been around for many years, but continues to get updates and it used at GitHub to work out what programming languages are being used within repos. 

GitHub   

**⚡️ QUICK RELEASES:** 

[Octokit.rb 5.1](https://github.com/octokit/octokit.rb) – Ruby toolkit for the GitHub API.
 [iCalendar 2.8](https://github.com/icalendar/icalendar) – Work with RFC-5545 iCalendar data.
 [Actor 3.2](https://github.com/sunny/actor) – Composable Ruby service objects.
 [GoodJob 3.2](https://github.com/bensheldon/good_job) – Multithreaded, Postgres-based, ActiveJob backend.
 [active_hash 3.1.1](https://github.com/active-hash/active_hash) – Use a hash as a data source ActiveRecord style.
 [Rover 0.3.4](https://github.com/ankane/rover) – Simple, powerful data frames for Ruby.
 [Prophet.rb 0.4.2](https://github.com/ankane/prophet-ruby) – Time series forecasting.     

Jobs  

[Senior Ruby on Rails Engineer - 100% Remote North America - Entertainment Payroll Fintech](https://www.wrapbook.com/careers) — `User.find_by_email​("`you@oldcompany.com`")​.update(employer: "Wrapbook", email: "`you@wrapbook.com`")` 
Wrapbook   

[Senior/Staff Rails Engineer (Denver or US Remote)](https://thereceptionist.recruitee.com/o/staff-rails-engineer) — Bring your love of Rails, Stimulus, and Hotwire to our team and help us build version 2 of our Visitor Management platform. 
The Receptionist   

[Senior Backend Engineer-Ruby on Rails (Remote-United States)](https://grnh.se/51d354183us) — Health tech startup looking for Senior ROR Engineers. Help us build a sustainable future for healthcare professionals! 
CareRev   

[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           

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