diff --git a/.ruby-version b/.ruby-version index b347b11e..84d6c676 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.3 +3.4.10 diff --git a/.tool-versions b/.tool-versions index 8ea25933..0b053141 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,5 +1,5 @@ nodejs 22.23.2 -ruby 3.2.3 +ruby 3.4.10 postgres 12.8 mongodb 4.4.9 redis 6.2.3 diff --git a/CLAUDE.md b/CLAUDE.md index f6ea7157..f29b0a76 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Flaredown is a chronic-illness symptom tracker. It is a monorepo with three deployable apps: -- `backend/` — Rails 7.1 API (Ruby 3.2.3), the only backend for all clients. +- `backend/` — Rails 7.2 API (Ruby 3.4.10), the only backend for all clients. - `frontend/` — Ember.js 2.18 web app (the production web client at app.flaredown.com), proxies API calls to the backend. - `native/` — Expo / React Native + TypeScript app (newer, in-progress replacement for the Ember client). diff --git a/README.md b/README.md index deba00d4..21fb57d3 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Help would be appreciated! Please join us in [slack #flaredown](https://join.sla * PostgreSQL 12.8 * MongoDB 4.4.9 * Redis 6.2.3 -* Ruby 3.2.3 +* Ruby 3.4.10 * Node 22 (the frontend supports Node 18 and newer; `frontend/.nvmrc` pins the version CI builds against) ## Installation diff --git a/backend/Dockerfile b/backend/Dockerfile index 276ca765..746a44d1 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.2.3 +FROM ruby:3.4.10 # set working directory WORKDIR /app diff --git a/backend/Gemfile b/backend/Gemfile index 2951a450..8cfdfd05 100644 --- a/backend/Gemfile +++ b/backend/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -ruby "3.2.3" +ruby "3.4.10" # Configuration management. keep on top of Gemfile gem "dotenv-rails", groups: %i[development test] @@ -48,6 +48,13 @@ gem "countries", require: "countries/global" # Pusher Client gem "pusher" +# Ruby 3.4 moved mutex_m from the default gems to the bundled gems, so it is no +# longer requirable from inside the bundle unless it is in the Gemfile. +# httpclient/auth.rb requires it, pusher requires httpclient, and the failure is +# a partially-defined HTTPClient class rather than a LoadError -- webmock +# swallows the LoadError and then dies aliasing a method that was never reached. +gem "mutex_m" + # ActiveRecord data translations gem "globalize", "~> 7.1" diff --git a/backend/Gemfile.lock b/backend/Gemfile.lock index 84c7b47d..1d12e08f 100644 --- a/backend/Gemfile.lock +++ b/backend/Gemfile.lock @@ -283,6 +283,7 @@ GEM multi_json (1.15.0) multi_xml (0.6.0) multipart-post (2.4.1) + mutex_m (0.3.0) nearest_time_zone (0.0.4) andand kdtree @@ -331,9 +332,9 @@ GEM pry-byebug (3.10.1) byebug (~> 11.0) pry (>= 0.13, < 0.15) - pry-doc (1.5.0) + pry-doc (1.7.0) pry (~> 0.11) - yard (~> 0.9.11) + yard (~> 0.9.21) pry-rails (0.3.11) pry (>= 0.13.0) public_suffix (7.0.5) @@ -546,6 +547,7 @@ DEPENDENCIES letter_opener mongoid (= 9.0.11) mongoid-rspec + mutex_m nearest_time_zone omniauth (~> 1.8) omniauth-facebook (~> 3.0) @@ -574,7 +576,7 @@ DEPENDENCIES webmock RUBY VERSION - ruby 3.2.3p157 + ruby 3.4.10p104 BUNDLED WITH 2.5.6