---
title: "Sinatra 3.1 released"
publication: "Ruby Weekly"
issue: 666
published_at: "2023-08-10"
canonical_url: "https://rubyweekly.com/issues/666"
---

Plus two GC improvements for Ruby 3.3, ruby_memcheck 2.0, and building an elegant file uploader. |        

#​666 🤘 — August 10, 2023 

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

Together with [![Stytch logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_250,h_100/e_make_transparent/co_white,e_outline:7/ybmf19rrsbnymq3rn7n3.png)](https://stytch.com/blog/jwts-vs-sessions-which-is-right-for-you/?utm_source=cooperpress&utm_medium=paid_sponsorship&utm_campaign=SP_Coopernews_Q32023&utm_content=jwt-vs-session-ruby)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cnfu67ihrzlc9sbabeoc.jpg)](https://code.avi.nyc/an-activestorage-s3-direct-uploader-part-1-the-drag-and-drop-interface)  

[Building an ActiveStorage and S3-Powered Direct Drag-Drop Uploader](https://code.avi.nyc/an-activestorage-s3-direct-uploader-part-1-the-drag-and-drop-interface) — A fantastic series of posts walking through the building of an elegant file uploader control for a Rails app, from setting up the model and controller to using Stimulus, hooking up [‘direct to S3’ uploads](https://code.avi.nyc/an-activestorage-s3-direct-uploader-part-2-direct-upload-to-s3), and a way to [monitor upload progress](https://code.avi.nyc/an-activestorage-s3-direct-uploader-part-3-upload-progress). 

Avi Flombaum   

[How Two GC Improvements Made Shopify's Storefronts 8% Faster](https://railsatscale.com/2023-08-08-two-garbage-collection-improvements-made-our-storefronts-8-faster/) — Shopify famously runs Ruby and Rails at a mind-boggling scale, so any improvements make a real impact to their bottom line. They've found two new such improvements that have reduced their response times by 8% _and_ will be released as part of Ruby 3.3, meaning we'll all benefit. 

Peter Zhu (Shopify)   [![\](https://copm.s3.amazonaws.com/e0afd890.png)](https://stytch.com/blog/jwts-vs-sessions-which-is-right-for-you/?utm_source=cooperpress&utm_medium=paid_sponsorship&utm_campaign=SP_Coopernews_Q32023&utm_content=jwt-vs-session-ruby) 

[JWTs Vs. Sessions: Which Authentication Approach Is Right for You?](https://stytch.com/blog/jwts-vs-sessions-which-is-right-for-you/?utm_source=cooperpress&utm_medium=paid_sponsorship&utm_campaign=SP_Coopernews_Q32023&utm_content=jwt-vs-session-ruby) — JWTs are low-latency and offer better interoperability than session cookies for authentication, but they can also be less secure. Read more about the tradeoffs (and learn what Stytch uses in our [Ruby SDK](https://github.com/stytchauth/stytch-ruby?utm_source=cooperpress&utm_medium=paid_sponsorship&utm_campaign=SP_Coopernews_Q32023&utm_content=jwt-vs-session-ruby)). 

Stytch sponsor   

[Sinatra 3.1: The Long Standing Ruby Webapp DSL](https://sinatrarb.com/) — [v3.1.0](https://github.com/sinatra/sinatra/blob/main/CHANGELOG.md#310--2023-08-07) adds start/stop [lifecycle events](https://github.com/sinatra/sinatra#lifecycle-events) (`on_start` and `on_stop`), reintroduces Sass support, and [makes Puma the default server](https://github.com/sinatra/sinatra/issues/1883) where available. [GitHub repo](https://github.com/sinatra/sinatra). 

Sinatra Contributors   

🔐 [It's Time to Level Up Your RubyGems Account Security with Security Devices](https://blog.rubygems.org/2023/08/03/level-up-using-security-devices.html) — The [RubyGems](https://rubygems.org/) registry has upped its security game considerably in recent years and Webauthn is its preferred multi-factor authentication approach. If you have a security key (or even a Macbook with TouchID) you're encouraged to set this up ASAP to help protect your account from abuse. 

Jenny Shen (RubyGems Blog)   

[Introducing the Rails Luminary Awards: Nominations Now Open](https://rubyonrails.org/2023/8/8/introducing-rails-luminaries) — Starting at _Rails World_ in October, the Rails Foundation will establish a new tradition of celebrating _Rails Luminaries_ – people who’ve contributed to the Rails ecosystem and community in exceptional ways. If this reminds you of the _Ruby Hero Awards_ ([▶️ here's a classic example](https://www.youtube.com/watch?v=ffCxpBD-_Rs) when José Valim and Aaron Patterson both picked up awards, among others) then.. yes. 

Amanda Perino (The Rails Foundation)   

- 📺 RubyCademy is continuing to improve the quality of old Ruby talks and the latest is the late Jim Weirich's [▶️_What All Rubyists Should Know About Threads_](https://www.youtube.com/watch?v=4zbN29UkNQw) from 2008! Away from Ruby, you can also watch [▶️ Linus Torvalds' 2007 talk where he introduced `git`.](https://www.youtube.com/watch?v=MsgehlwlvCE)
- 📊 Lucian Ghinda looked through the recent Stack Overflow Developer Survey results and [picked over the parts relevant to Ruby.](https://allaboutcoding.ghinda.com/insights-from-stack-overflow-developer-survey-2023-about-ruby)
- 📅 RubyConf Taiwan is taking place this December 15-16 and [the CFP is open](https://cfp.rubyconf.tw/activities/2023) until October 20.
- 📅 In other event news, [Euruko 2023](https://2023.euruko.org/) is just around the corner. It takes place in Vilnius, Lithuania on September 21-23.
- 😬 If you use RSpec and are upgrading an app to Ruby 3.2, [🐦 be sure to upgrade to RSpec v3.12.6+ first](https://twitter.com/benjaminwood/status/1689417288833970177) because of [this bug](https://github.com/rspec/rspec-mocks/pull/1552), warns Benjamin Wood.  

📕 Tutorials, Articles, and Videos  

[You Don't Need Ruby on Rails to Start Using Hotwire](https://www.akshaykhot.com/using-hotwire-without-rails/) — [Hotwire](https://hotwired.dev/), an ‘HTML over the wire’ approach to making Web pages more dynamic, is closely tied to Rails, but Rails isn’t a _must_. Akshay shows how you can use Turbo Drive, Turbo Frames _and_ Turbo Streams with a Sinatra-based app here. _(If you’re getting déja vu, this is a (big) update of an earlier article.)_ 

Akshay Khot   

[A Look at Overmind, A Better `bin/dev` for your `Procfile`](https://railsnotes.xyz/blog/overmind-better-bin-dev-for-your-procfile-dev) — [Overmind](https://github.com/DarthSim/overmind) is a turbo-charged `Procfile` manager, like Foreman and `bin/dev`, but… a lot better, says Harrison, who tries to win you over to using it here. _“Overmind builds on from where Foreman left off to deliver something even more impressive.”_ 

Harrison Broadbent   

[Let’s Talk Wicked Prawn PDFkits! 😈🦐📑](https://www.honeybadger.io/blog/ruby-pdfs/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby) — Working with invoices, contracts, or reading your favorite novel, PDFs are everywhere! Learn how PDFs work within Ruby. 

Honeybadger sponsor   

[Various Ways to Run Shell Commands in Ruby](https://www.akshaykhot.com/call-shell-commands-in-ruby/) — It’s no surprise that a language heavily inspired by Perl has numerous ways to do this ;-) 

Akshay Khot   

[Setting an Actions Secret with Octokit.rb](https://www.mikecoutermarsh.com/setting-an-actions-secret-with-octokit-rb-ruby/) 
Mike Coutermarsh   

[Using Concerns with Ruby on Rails](https://www.codynorman.com/ruby/rails_concerns/) 
Cody Norman  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/anlwwco9skmdzo9ume1l.jpg)](https://github.com/westonganger/rails_i18n_manager)   

[Rails I18n Manager 1.0: Complete Translation Editor and Workflow](https://github.com/westonganger/rails_i18n_manager) — A Rails engine that provides an interface for working on your app’s translations. It provides a workflow with import and export, access to translation assistance, and keeps your files in your app’s git repo. 

Weston Ganger   

[ruby_memcheck 2.0: Find and Debug Memory Issues in Native Gems](https://github.com/Shopify/ruby_memcheck) — Use Valgrind memcheck on your native gem (it’s no use for plain Ruby) to dig into memory related issues. It’s pretty useful, as Peter Zhu [noted on Twitter](https://twitter.com/peterzhu2118/status/1689382264092635138), as v2.0 has already caught two [memory](https://bugs.ruby-lang.org/issues/19835) [leaks](https://bugs.ruby-lang.org/issues/19836) in Ruby’s current parser. 

Peter Zhu (Shopify)   

[Got Tech Debt? Fixed-Cost Monthly Ruby/Rails Upgrades by FastRuby.io](https://go.fastruby.io/3bl) — [@FastRubyIO](https://twitter.com/FastRubyIO)'s monthly upgrade service reduces your tech debt without impacting your velocity. Starting at $2k/month. 🚀 

🌳 Bonsai by FastRuby.io sponsor   

[YARP 0.6: Yet Another Ruby Parser](https://rubygems.org/gems/yarp) — _“I just released the first published version of the YARP gem. If you want to build tools that require a Ruby AST and want them to be fast and semantic, you should check it out.”_ [Docs.](https://ruby.github.io/yarp/) 

Kevin Newton   

[MailCatcher 0.9: Simple SMTP Server with a Web UI to See Mails](https://github.com/sj26/mailcatcher) — This project is a whole thirteen years old now but is still inching towards that eventual 1.0 release ;-) 

Samuel Cochran     

Jobs  

[Senior Backend Engineer (Backend)](https://sweatcoin.teamtailor.com/jobs/2274924-senior-backend-developer-ruby-on-rails?promotion=595108-trackable-share-link-rubyweekly) — 12M user devices sent us data daily last week, 6M of them opened the app. Apply your knowledge and help make our users healthier. 
Sweatcoin   

[Senior DevOps Engineer - Stability Team (America)](https://booqable.com/careers/devops-stability) — Booqable prides itself on being a global company with team members working together from across the world. We are remote-first, so you can join us from wherever you are. 
Booqable   

[Find Ruby Jobs with 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=easy-job-hunting) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired      

_QUICK RELEASES:_ 

- [mime-types for Ruby 3.5](https://github.com/mime-types/ruby-mime-types)
 ↳ MIME content type definitions library.
- [Acidic Job 0.9](https://github.com/fractaledmind/acidic_job)
 ↳ Idempotent operations for ActiveJob or Sidekiq.
- [Avo 3 Open Beta](https://v3.avohq.io/blog/avo-3-beta)
 ↳ A commercial Rails CMS you [integrate into your app](https://v3.avohq.io/blog/the-difference-in-avo-and-rails-starter-kits).
- [Rails 7.0.7](https://rubyonrails.org/2023/8/10/Rails-7-0-7-has-been-released)
- [Packwerk 3.1](https://github.com/Shopify/packwerk)
- [Rubocop 1.56](https://github.com/rubocop/rubocop)  

🎄 Four months to go... 

[![Ruby 3.3 YJIT comment\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xu0iafokgmuo6zlqytky.jpg)](https://twitter.com/k0kubun/status/1689338597340753925)        

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 [Supporting Ukraine](https://linktr.ee/RazomForUkraine) 

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