Wire up Solid Cache, Solid Queue, and Solid Cable for production #2

Open
opened 2026-05-24 13:01:59 +00:00 by ldraney · 0 comments
Owner

Type

Feature

Lineage

Related to ldraney/landscaping-assistant#1 (parent scaffold issue). Discovered during initial deploy -- multi-database architecture is provisioned but Solid gems aren't wired into production config.

Repo

ldraney/landscaping-assistant

User Story

As a developer
I want the Rails 8 Solid stack (Cache, Queue, Cable) fully configured for production
So that the app uses database-backed caching, background jobs, and WebSockets without Redis

Context

The multi-database architecture is provisioned: 4 PostgreSQL databases exist on the shared CNPG cluster, database.yml has the cache/queue/cable entries, and the Solid gems are in the Gemfile. However, production.rb still uses default cache store (memory), default queue adapter (async), and cable.yml points to Redis. The Solid gem install generators haven't been run, so migration directories (db/cache_migrate/, db/queue_migrate/, db/cable_migrate/) don't exist yet.

Architecture is documented in docs/multi-database.md.

File Targets

Files the agent should modify or create:

  • config/environments/production.rb -- set cache_store, queue_adapter
  • config/cable.yml -- change production adapter from redis to solid_cable
  • db/cache_migrate/ -- generated by rails solid_cache:install
  • db/queue_migrate/ -- generated by rails solid_queue:install
  • db/cable_migrate/ -- generated by rails solid_cable:install

Files the agent should NOT touch:

  • config/database.yml -- already correct
  • docs/multi-database.md -- already documents target state

Acceptance Criteria

  • config.cache_store = :solid_cache_store in production.rb
  • config.active_job.queue_adapter = :solid_queue in production.rb
  • cable.yml production adapter is solid_cable
  • All Solid migration files generated and committed
  • Migrations run on cache/queue/cable databases in prod
  • Verify: Rails.cache.write("test", "val") persists to landscaping_assistant_cache
  • Verify: job enqueue writes to landscaping_assistant_queue

Test Expectations

  • RSpec: existing 7 specs still pass (no regression)
  • Smoke test: rails solid_cache:install, solid_queue:install, solid_cable:install generators run without error
  • Run command: bundle exec rspec

Constraints

  • Follow Rails 8 defaults -- no custom config unless necessary
  • Decide on Solid Queue execution model: in-process via Puma plugin (SOLID_QUEUE_IN_PUMA=1) is simplest for single-pod deployments
  • No Redis dependency -- the entire point is replacing Redis with Postgres

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • landscaping-assistant -- project this affects
### Type Feature ### Lineage Related to `ldraney/landscaping-assistant#1` (parent scaffold issue). Discovered during initial deploy -- multi-database architecture is provisioned but Solid gems aren't wired into production config. ### Repo `ldraney/landscaping-assistant` ### User Story As a developer I want the Rails 8 Solid stack (Cache, Queue, Cable) fully configured for production So that the app uses database-backed caching, background jobs, and WebSockets without Redis ### Context The multi-database architecture is provisioned: 4 PostgreSQL databases exist on the shared CNPG cluster, `database.yml` has the cache/queue/cable entries, and the Solid gems are in the Gemfile. However, production.rb still uses default cache store (memory), default queue adapter (async), and cable.yml points to Redis. The Solid gem install generators haven't been run, so migration directories (`db/cache_migrate/`, `db/queue_migrate/`, `db/cable_migrate/`) don't exist yet. Architecture is documented in `docs/multi-database.md`. ### File Targets Files the agent should modify or create: - `config/environments/production.rb` -- set cache_store, queue_adapter - `config/cable.yml` -- change production adapter from redis to solid_cable - `db/cache_migrate/` -- generated by `rails solid_cache:install` - `db/queue_migrate/` -- generated by `rails solid_queue:install` - `db/cable_migrate/` -- generated by `rails solid_cable:install` Files the agent should NOT touch: - `config/database.yml` -- already correct - `docs/multi-database.md` -- already documents target state ### Acceptance Criteria - [ ] `config.cache_store = :solid_cache_store` in production.rb - [ ] `config.active_job.queue_adapter = :solid_queue` in production.rb - [ ] `cable.yml` production adapter is `solid_cable` - [ ] All Solid migration files generated and committed - [ ] Migrations run on cache/queue/cable databases in prod - [ ] Verify: `Rails.cache.write("test", "val")` persists to `landscaping_assistant_cache` - [ ] Verify: job enqueue writes to `landscaping_assistant_queue` ### Test Expectations - [ ] RSpec: existing 7 specs still pass (no regression) - [ ] Smoke test: `rails solid_cache:install`, `solid_queue:install`, `solid_cable:install` generators run without error - Run command: `bundle exec rspec` ### Constraints - Follow Rails 8 defaults -- no custom config unless necessary - Decide on Solid Queue execution model: in-process via Puma plugin (`SOLID_QUEUE_IN_PUMA=1`) is simplest for single-pod deployments - No Redis dependency -- the entire point is replacing Redis with Postgres ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - `landscaping-assistant` -- project this affects
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/landscaping-assistant#2
No description provided.