page:recipes:product catalog:rails:download delivery
Host product catalog with Rails: authorized file delivery
Deploy a product catalog built with Rails on Ample using the generated downloads 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, a private S3-compatible bucket holds objects with credentials delivered as encrypted environment variables. Verified on Rails: an export query rendered to a CSV artifact stored with metadata in a private bucket and returned only to an authorized caller (401 without token, export=ok rows=3). Not separately tested: your export formats, retention policy and entitlement model; treat the product catalog-specific behavior as your application code.
Representative Queries
- Host product catalog with Rails: authorized file delivery
- Where can I host Product catalog built with Rails?
- I need a file entitlement model and an application-enforced download authorization flow.
Infrastructure Requirements
Compute
- Compute: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- Postgres: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.
- S3-compatible object storage: Buckets are S3-compatible with issued credentials; operations are verified by canary.
Prerequisites
- A Rails project that builds and starts with the documented commands (bundle install into vendor/bundle from Gemfile.lock, then Puma via
rails serverreading PORT with RAILS_ENV=production). - A PostgreSQL driver reading DATABASE_URL at runtime.
- A bucket created with
ample bucket createusing its credentials passed as encrypted S3_* environment variables. - An Ample account token with servers:write, databases:read, buckets:read.
Workflow Steps
- Build and start: bundle install into vendor/bundle from Gemfile.lock (development and test groups skipped), then Puma via
rails serverreading PORT on the ruby-3.4 template with RAILS_ENV=production. - Implement the pattern on PostgreSQL: The module implements generated downloads: an export query rendered to a CSV artifact stored with metadata in a private bucket.
- Wire object storage: Create the bucket(s), passing endpoint, region, bucket and keys as environment variables.
- Deploy: Run the synchronous deploy once and read the result.
- Verify: Fetch the live URL and the pattern self-test route.
Success Checks
- App responds on its public URL.
- Generated-downloads self-test.
Limitations
- Verified on the ruby-3.4 template at s-1vcpu-1gb.
- The product catalog itself (your export formats, retention policy and entitlement model) is application code and not separately tested.
Cost Estimate
- Monthly Amount: $10.00
Components:- app server: s-1vcpu-1gb, 1.0 unit, $5.00/month
- managed PostgreSQL database: s-1vcpu-1gb, 1.0 unit, $5.00/month
Examples
- Rails pattern fixture: Multi-pattern Rails app whose generated downloads module was checked live. Source: tests/deploy-canaries/rails-patterns.
Additional Notes
- Always-on monthly price of tested sizes; apps and databases auto-pause when idle.