---
title: "37signals releases the source for another SaaS app"
publication: "Ruby Weekly"
issue: 778
published_at: "2025-12-04"
canonical_url: "https://rubyweekly.com/issues/778"
---

Plus RubyGems 4.0, transpiling Ruby to JavaScript, and the Advent of Code is back. |        

#​778 — December 4, 2025 

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

Together with [![Macroscope\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_1280,h_427/e_make_transparent/co_white,e_outline:17/geraf2nsogzdnadx6ikm.png)](https://links.macroscope.com/ruby-weekly)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/iutaxelz6fb5jl5ctdjy.jpg)](https://blog.rubygems.org/2025/12/03/4.0.0-released.html)  

[RubyGems and Bundler 4.0 Released](https://blog.rubygems.org/2025/12/03/4.0.0-released.html) — If you want to get ahead of any potential issues the Ruby 4.0 upgrade may surface, the early release of RubyGems 4.0 and Bundler 4.0 could help you get started. There's many tweaks and minor improvements, like `-j` being set by default to speed up compilation of native extensions, `cache_all` true by default, and the ability to specify custom lockfile locations. There are some potentially breaking changes too, though, like the removal of support for multiple global sources in Gemfiles. 

Hiroshi Shibata   

💡 If sifting through a list of features isn't your idea of a good time, Hiroshi Shibata has put together [a guide to upgrading to RubyGems/Bundler 4](https://blog.rubygems.org/2025/12/03/upgrade-to-rubygems-bundler-4.html) focusing on the key points to be aware of.  [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/16371d8a.png)](https://links.macroscope.com/ruby-weekly) 

[MACROSCOPE - Ship Fewer Bugs, Merge Faster](https://links.macroscope.com/ruby-weekly) — Macroscope catches more bugs than any other code review tool, with the #1 signal-to-noise ratio on the market. And Macroscope is free for non-commercial open source projects. Use discount code `MACRORUBY` to get 50% off your first 2 months. 

Macroscope sponsor   

**⚡️ IN BRIEF:**  

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/adldkfp24qy3cst3cmiu.jpg)](https://docs.ruby-lang.org/en/master/)  

- [The official Ruby docs site](https://docs.ruby-lang.org/en/master/) has updated _(see above)_ to the Aliki theme teased a few weeks ago. It looks cleaner than ever and has a good search feature too.
- Mike Perham has partnered with [gem.coop](https://gem.coop/) to offer $100,000 in [annual _Gem Fellowship_ grants](https://gem.coop/fellowship/) targeting open source tooling in the Ruby community and [you can apply now.](https://forms.gle/mJHQaBgidpCq5nFa6)
- 🎄 [The Advent of Code](https://adventofcode.com/) is back for 2025 with a fresh set of coding puzzles to enjoy. [Ruby is a fantastic language to use](https://hashrocket.com/blog/posts/why-ruby-is-the-best-language-for-advent-of-code) for completing it.
- Gregory Brown, creator of [Prawn](https://github.com/prawnpdf/prawn), has [popped up to discuss ongoing maintenance](https://github.com/orgs/prawnpdf/discussions/1386) of the popular PDF library.
- Dan Croak does a great job of [showing off his custom Ruby test framework](https://dancroak.com/ruby/test/) which is _"optimized for my happiness."_   

['Ruby is Not a Serious Programming Language'](https://www.wired.com/story/ruby-is-not-a-serious-programming-language/) — I dislike linking to negative things (though it does have a cool illustration!) but this post on Wired picked up a lot of heat this week. It’s an odd piece for them and rather lacking in substance for an author who uses words like _"prelapsarian"_. Robby Russell responded with [Why So Serious?](https://robbyonrails.com/articles/2025/12/01/why-so-serious/), reflecting on what ‘serious’ even means, and why _serious_ and _valuable_ are quite orthogonal. 

Sheon Han (Wired)   

[How To Rev Up Your Rails Development with MCP](https://hashrocket.com/blog/posts/how-to-rev-up-your-rails-development-with-mcp) — The [Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro) (MCP) is a standard for connecting AI tools and agents to other tools and [rails-mcp-server](https://github.com/maquina-app/rails-mcp-server) is such a server that lets AI tools interrogate and interact with in-development Rails apps at a low level. 

Jack Rosa (Hashrocket)   

[📕Your Codebase Shouldn't Be a Mystery Novel That Takes 6 Months to Understand](https://link.testdouble.com/a8e964) — Engineers not productive due to legacy crud? Right-size subsystem design with seam-based modernization enabled by AI. 

Test Double sponsor   

📄 [Running Ruby Apps in FIPS Mode on Red Hat Enterprise Linux](https://developers.redhat.com/articles/2025/11/28/run-ruby-applications-fips-mode-red-hat-enterprise-linux) Jun Aruga (Red Hat) 

📄 [Deploying the World's Largest GitLab Instance 12 Times Daily](https://about.gitlab.com/blog/continuously-deploying-the-largest-gitlab-instance/) – Rails isn’t mentioned but GitLab is [a Rails app.](https://gitlab.com/gitlab-org/gitlab) John Skarbek (GitLab) 

📄 [Building Optimistic UI in Rails (and Learn Custom Elements)](https://railsdesigner.com/custom-elements/) Rails Designer 

📄 [Using Sidekiq with Hanami](https://alchemists.io/articles/hanami_with_sidekiq) Brooke Kuhlmann  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/tkzhiiegklyjhvdzjp5g.jpg)](https://github.com/basecamp/fizzy)  

[The Code for 37signals' New Kanban App, _Fizzy_](https://github.com/basecamp/fizzy) — You may recall that 37signals open sourced their [Campfire](https://github.com/basecamp/once-campfire) chat app recently – now there’s a new, complete Rails app available to dig through (or install!) offering Kanban-style task management. It’s not _quite_ open source, having [a license](https://github.com/basecamp/fizzy/blob/main/LICENSE.md) prohibiting competition with 37signals’ [own paid SaaS version](https://www.fizzy.do/) but it’s ripe for analysis if you want to see how 37signals builds its own apps from the ground up. 

37signals   

💡 And people _have_ [begun analyzing it](https://beautifulruby.com/code/fizzy) in various ways, including Rob Zolkos who [looks at its use of vanilla CSS](https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need), Vladimir Dementyev's [diagram of the app's schema](https://railserd.com/g/23b86bd9bf1a24b432ae), and Alex Shapalov's [X thread](https://x.com/alxshp/status/1996233380636361072) on 'ten patterns you can reuse in your own Rails app.'  

[Try AI on Postgres Without the Hassle—Meet the Free Agentic Plan](https://www.tigerdata.com/blog/postgres-for-agents) — No credit card, no limits on experimentation. Fork, test, and build AI-powered Rails features faster. 

Tiger Data sponsor   

[Ruby2JS: A Ruby to JavaScript Transpiler](https://www.ruby2js.com/) — A transpiler aimed at keeping the resulting code looking ‘hand crafted’ rather than merely transpiled. Play with the live demo on the home page to get a feel for it. Sam has also [recently added Prism support](https://intertwingly.net/blog/2025/11/27/Ruby2JS-Prism-Support.html) _“opening the door to eliminating duplicate business logic between Ruby servers and JavaScript clients.”_ 

Sam Ruby and Jared White   

💡 It's neat to see Ruby2JS continuing to progress. Sam Ruby has recently [blogged about updating how the Ruby2JS online demo works](https://intertwingly.net/blog/2025/11/29/Ruby2JS-Browser-Options.html) and experiments with having Ruby2JS _transpile itself_ to JavaScript.  

[html-to-markdown: HTML to Markdown Conversion Library](https://github.com/Goldziher/html-to-markdown/blob/main/packages/ruby/README.md) — A fast Rust-powered library for turning HTML into Markdown – the opposite way round from what you might ordinarily do. It’s offered [in numerous forms for various languages](https://github.com/Goldziher/html-to-markdown), including Ruby, and [there’s a live Web-based demo.](https://goldziher.github.io/html-to-markdown/) 

Na'aman Hirschfeld   

- [Rage v1.19](https://github.com/rage-rb/rage/releases/tag/v1.19.0) – High-performance Rails-compatible API-only framework featuring WebSocket support and automatic generation of OpenAPI docs for your APIs.
- [ReActionView v0.2.0](https://github.com/marcoroth/reactionview) – ActionView-compatible ERB engine with HTML validation, improved error feedback, and developer-friendly debug mode.
- [dotenv 3.2](https://github.com/bkeepers/dotenv/releases/tag/v3.2.0) – The popular way to load environment variables from a .env file in development now starts a little quicker.
- [Rack::UTF8Sanitizer v1.11.0](https://github.com/whitequark/rack-utf8_sanitizer) – Middleware to clean up invalid UTF8 characters in request URIs and headers.
- [Seed Dump 3.4](https://github.com/rroblak/seed_dump/releases/tag/v3.4.0) – Rails task that generates seed files from the existing database.
- [Spree 5.2](https://github.com/spree/spree/releases/tag/v5.2.0) – A notable update for a popular Rails-based ecommerce platform.
- [rubygems-tasks 0.3](https://github.com/postmodern/rubygems-tasks) – Simple Rake tasks for managing and releasing gems.
- [JSON v2.17.0](https://github.com/ruby/json/releases/tag/v2.17.0) – Implementation of the JSON specification for Ruby.
- [Pagy 43.2](https://github.com/ddnexus/pagy/releases/tag/43.2.0) – Efficient pagination library.       

📰 Classifieds   

🛟 Tech debt consuming your dev time? [SINAPTIA's Ruby experts](http://sinaptia.dev/services/staff-augmentation?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=rubyweekly-2025q4&utm_content=classified) join your team on demand to handle maintenance, fix legacy code, and tackle issues. 

--- 

🤖 Your AI assistant writes Ruby. Now it can monitor it too. [Scout Monitoring's MCP](https://www.scoutapm.com/?utm_source=rubyweekly&utm_medium=newsletter&utm_campaign=local_mcp_launch&utm_content=b) pipes errors, logs & traces straight into chat.    

📢 Elsewhere in the ecosystem  

Some other interesting stories in the broader landscape: 

- 🔒 _Let's Encrypt_ has announced that it's gradually reducing the validity period of certificates it issues [from 90 days to 45 days over the next two years.](https://letsencrypt.org/2025/12/02/from-90-to-45.html) If you have a process for obtaining certificates from them, you'll want to ensure it's robust enough to handle the change.
- ⚠️ If you're using React and/or Next.js in your stack and your app supports React Server Components (even if it's not actively _using_ them), you need to be aware of [a critical security vulnerability just announced by the React team.](https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components) There's also [an update from the Next.js team.](https://nextjs.org/blog/CVE-2025-66478)
- [Postgres.app](https://postgresapp.com/) is a popular, easy way to run a Postgres instance on macOS and it's added [downloads for quickly installing a few popular extensions](https://postgresapp.com/extensions/) (PL/v8, http, pg_parquet, and TimescaleDB).
- Ever fancied analyzing the millions of posts and comments on [Hacker News](https://news.ycombinator.com/)? [ClickHouse has released a 55GB dataset](https://clickhouse.com/docs/getting-started/example-datasets/hackernews-vector-search-dataset), complete with vector embeddings.
- What's [the most efficient way to store JSON in Postgres?](https://www.depesz.com/2025/11/29/using-json-json-vs-jsonb-pglz-vs-lz4-key-optimization-parsing-speed/)         

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