Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions .claude/skills/sandbox-test-setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,21 +33,21 @@ sandbox**; `/home/user/bike_index` uses **Claude Code web sandbox**.

## Local macOS (Conductor workspace)

Ruby 4.0.5 is installed via [mise](https://mise.jdx.dev/), but Claude
Ruby 4.0.6 is installed via [mise](https://mise.jdx.dev/), but Claude
Code's shell sometimes spawns subprocesses without the mise shim on
PATH — bare `ruby` then resolves to `/usr/bin/ruby` (2.6) and `bundle`
fails with `Could not find 'bundler' (4.0.0.beta2)`. **The Ruby is
installed; the PATH just isn't right** — don't reinstall, don't edit
the Gemfile.

Check first; only prefix PATH if `ruby -v` doesn't already print 4.0.5
Check first; only prefix PATH if `ruby -v` doesn't already print 4.0.6
(`mise exec -- ruby`/`bundle` are unreliable in this harness — they
can still resolve to system 2.6, so use the direct prefix):

```bash
ruby -v
# If it's not 4.0.5:
export PATH="/Users/seth/.local/share/mise/installs/ruby/4.0.5/bin:$PATH"
# If it's not 4.0.6:
export PATH="/Users/seth/.local/share/mise/installs/ruby/4.0.6/bin:$PATH"
```

Then run specs the normal way:
Expand Down Expand Up @@ -111,7 +111,7 @@ Activate mise so its shims put the pinned Ruby and a matching Bundler on PATH
```bash
export PATH="$HOME/.local/bin:$PATH"
eval "$(mise activate bash)"
ruby --version # => ruby 4.0.5 ... [x86_64-linux]
ruby --version # => ruby 4.0.6 ... [x86_64-linux]
bundle install # ~8s once shared-mime-info is present; vendor/bundle + .bundle are gitignored
```

Expand All @@ -120,7 +120,7 @@ drops the mise shim (same harness quirk as Local macOS), prefix the install
dir directly instead of reactivating (match the version in `mise.toml`):

```bash
export PATH="$HOME/.local/share/mise/installs/ruby/4.0.5/bin:$PATH"
export PATH="$HOME/.local/share/mise/installs/ruby/4.0.6/bin:$PATH"
```

### Database-backed specs
Expand All @@ -134,7 +134,7 @@ applies to any spec that renders the layout.

## Claude Code web sandbox

`Gemfile` pins the Ruby version (`ruby "4.0.5"` at time of writing —
`Gemfile` pins the Ruby version (`ruby "4.0.6"` at time of writing —
**read the current pin from the `ruby` line in `Gemfile`**, it moves) and
`Gemfile.lock` pins `BUNDLED WITH 4.0.15`. No prebuilt binary for that
version is reachable (`cache.ruby-lang.org` is 403'd, `ruby/ruby-builder`'s
Expand Down Expand Up @@ -211,8 +211,8 @@ lives only on `/usr/sbin`.

```bash
CHROME_DIR=$(ls -d /opt/pw-browsers/chromium-*/chrome-linux | sort -V | tail -1)
export PATH="/opt/ruby-4.0.5/x64/bin:$CHROME_DIR:/usr/local/bin:/usr/bin:/bin:/usr/sbin"
export LD_LIBRARY_PATH="/opt/ruby-4.0.5/x64/lib:$LD_LIBRARY_PATH"
export PATH="/opt/ruby-4.0.6/x64/bin:$CHROME_DIR:/usr/local/bin:/usr/bin:/bin:/usr/sbin"
export LD_LIBRARY_PATH="/opt/ruby-4.0.6/x64/lib:$LD_LIBRARY_PATH"
bundle install
```

Expand Down Expand Up @@ -333,13 +333,13 @@ trusts the self-signed cert.

## End-to-end recap

Assumes the pinned Ruby is already built (paths below use 4.0.5 — swap for
Assumes the pinned Ruby is already built (paths below use 4.0.6 — swap for
the current pin). Combines the steps above:

```bash
CHROME_DIR=$(ls -d /opt/pw-browsers/chromium-*/chrome-linux | sort -V | tail -1)
export PATH="/opt/ruby-4.0.5/x64/bin:$CHROME_DIR:/usr/local/bin:/usr/bin:/bin:/usr/sbin"
export LD_LIBRARY_PATH="/opt/ruby-4.0.5/x64/lib:$LD_LIBRARY_PATH"
export PATH="/opt/ruby-4.0.6/x64/bin:$CHROME_DIR:/usr/local/bin:/usr/bin:/bin:/usr/sbin"
export LD_LIBRARY_PATH="/opt/ruby-4.0.6/x64/lib:$LD_LIBRARY_PATH"
service postgresql start && service redis-server start
apt-get install -y libvips42 # ruby-vips loads at boot; without it every rails/rspec run dies
cd /home/user/bike_index
Expand Down
1 change: 1 addition & 0 deletions .cloud66/manifest.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
production:
rails:
configuration:
ruby_version: "4.0.6"
node_version: "24.15.0"
# usr1 is a Puma phased restart: workers recycle under a master that never dies, so
# nginx's socket never disappears. Env var changes still need a hard restart.
Expand Down
2 changes: 1 addition & 1 deletion .github/ci/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# Rebuilt automatically (ci.yml's build_ci_image job) whenever this file,
# .tool-versions, or package.json changes.

ARG RUBY_VERSION=4.0.5
ARG RUBY_VERSION=4.0.6
FROM docker.io/library/ruby:$RUBY_VERSION-slim

ENV BUNDLE_PATH=/usr/local/bundle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/kamal-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ jobs:
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "4.0.5"
ruby-version: "4.0.6"
- name: Install Kamal
run: gem install kamal -v "~> 2.0"
- name: Set up SSH agent
Expand Down
4 changes: 2 additions & 2 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ruby 4.0.5
# NOTE: If updating node version, also update .cloud66/manifest.yml
# NOTE: If updating ruby or node version, also update .cloud66/manifest.yml
ruby 4.0.6
nodejs 24.15.0

2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This Dockerfile is used only by review apps (and any future Kamal-based deploys).
# Production runs on Cloud66 — not from this file.

ARG RUBY_VERSION=4.0.5
ARG RUBY_VERSION=4.0.6
FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base

WORKDIR /rails
Expand Down
2 changes: 0 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
git_source(:gitlab) { |repo| "https://gitlab.com/#{repo}.git" }

ruby "4.0.5"

# Gems that are no longer in standard library as of Ruby 3.4
gem "csv"
gem "observer"
Expand Down
3 changes: 0 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1037,8 +1037,5 @@ DEPENDENCIES
view_component
webmock

RUBY VERSION
ruby 4.0.5

BUNDLED WITH
4.0.15
2 changes: 1 addition & 1 deletion bin/setup
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ FileUtils.chdir APP_ROOT do
end

puts "== Checking Ruby version =="
required_ruby = File.read(".tool-versions")[/ruby (\S+)/, 1]
required_ruby = File.read(".tool-versions")[/^ruby (\S+)/, 1]
if required_ruby && required_ruby != RUBY_VERSION
if ENV["SETUP_RUBY_INSTALLED"]
abort "Failed to activate Ruby #{required_ruby} via mise after installing"
Expand Down