page:recipes:appointment booking:rails:relational workflow

Host appointment booking with Rails: relational workflow state

Summary

Deploy a appointment booking built with Rails on Ample using the transactional workflows pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, a managed PostgreSQL 16 database is auto-provisioned and injected as DATABASE_URL. Verified on Rails: an optimistic version check and an event row written in the same transaction, a stale update rejected, and a history query over the application-owned events (history=2 conflict=rejected). Not separately tested: your domain records, validation rules and concurrency policy; treat the appointment booking-specific behavior as your application code.

Representative Queries

Resource Requirements

Infrastructure Requirements

Framework

Rails

Workload

Appointment booking

Release Status

published

Support Status

verified

Execution Status

ready

Prerequisites

Tested Configuration

Workflow Steps

  1. Build and start: bundle install into vendor/bundle from Gemfile.lock (development and test groups skipped), then Puma via rails server reading PORT on the ruby-3.4 template with RAILS_ENV=production. The server must bind 0.0.0.0 on PORT.
  2. Implement the pattern on PostgreSQL: The fixture's module implements transactional workflows: an optimistic version check and an event row written in the same transaction, a stale update rejected, and a history query over the application-owned events (history=2 conflict=rejected). Copy the approach into your schema; keep migrations idempotent and run them with --release-command.
  3. Deploy: Run the synchronous deploy once and read the result (exit 0 live, 1 failed, 2 blocked). Re-running with no change is a no-op.
  4. Verify: Fetch the live URL and the pattern self-test route(s) (/p/transactional-workflows) from the example; then run your own checks. On failure read ample logs --kind build then --kind runtime.

Examples

Success Checks

Limitations

Cost Estimate