Ruby on Rails Hosting in Kenya
Push a Rails app to GitHub and Chajio Cloud installs your gems, precompiles your assets and runs Puma on two replicas, with free SSL and a managed PostgreSQL database.
$ git push origin main
▸ Ruby version 3.4.12 from Gemfile.lock
▸ bundle install, without development and test
▸ Detected rails app (rails gem found)
▸ rake assets:precompile
▸ web: bin/rails db:prepare && bin/rails server
✓ Live on 2 replicas: https://my-app.live.chajio.cloud
How it works
How we build and run your Ruby on Rails app
Detect
A
Gemfilemarks a Ruby app, and therailsgem marks it as Rails. Delete theDockerfilethatrails newcreates: without it, a build takes minutes rather than most of the 45-minute limit.Install
Bundler installs the gems
Gemfile.lockpins, leaving out the development and test groups. The Ruby version comes fromGemfile.locktoo.Build
rake assets:precompileruns, so your stylesheets, images and JavaScript are ready before the app starts.Run
The
web:line in yourProcfileprepares the database, then starts Puma onPORT. The new version takes visitors once/upanswers.
Get ready
Getting your Ruby on Rails app ready
web: bin/rails db:prepare && bin/rails server --port "$PORT"Runs your migrations, then starts Puma. Without a Procfile, nothing runs your migrations.
source "https://rubygems.org"
ruby file: ".ruby-version"Then run bundle lock and commit Gemfile.lock. It gains a RUBY VERSION section, which is what the build reads: .ruby-version on its own is not, and without a version you get a default that may not be yours.
production:
<<: *default
url: <%= ENV["DATABASE_URL"] %>Replace the whole production: section. rails new expects four databases; a managed database is one, so Solid Cache, Queue and Cable move into it, as the Rails guide shows.
SECRET_KEY_BASE=output-of-bin/rails-secret
SOLID_QUEUE_IN_PUMA=trueGenerate the key with bin/rails secret, or set RAILS_MASTER_KEY to the contents of config/master.key instead. The second line runs your background jobs inside Puma.
Going further
Works with
What you can run
Rails 8
Tested with Rails 8.1 on Ruby 3.4.
Solid Queue
Background jobs, run inside Puma.
Solid Cache
Rails.cache, in your PostgreSQL database.
Solid Cable
Action Cable broadcasts, through the database.
Hotwire
Turbo and Stimulus, as rails new sets them up.
PostgreSQL
Managed for you, and handed over as DATABASE_URL.
In production
Running your Ruby on Rails app in production
One database, not four
In production, Rails 8 expects separate databases for its cache, queue and cable. A managed database is one database, so turn their schema files into migrations and drop the settings that point elsewhere.
Jobs run inside Puma
There is no separate worker process. With SOLID_QUEUE_IN_PUMA=true, Solid Queue runs your jobs inside the web server; without it, jobs are queued and nothing runs them.
One crash on the first deploy is normal
Both copies run db:prepare on the empty database at once, and the one that loses stops with ConcurrentMigrationError. It restarts by itself and is ready about 20 seconds later; the deploy still succeeds.
Memory
A Rails app with jobs running in Puma used 170 to 285 MB per copy in our tests, and took 20 to 30 seconds to start. Allow at least 512 MB per copy.
Every plan
Included on every plan
2 replicas of every app
Two copies behind a load balancer, so a restart or a failed machine never takes you offline.
A managed database
PostgreSQL, MariaDB or MongoDB, with its own standby replica on another machine.
Deploy on every push
Connect GitHub once; every push to your branch builds and goes live.
One-click rollbacks
Go back to any earlier successful deployment from the Deployments tab.
Free SSL, your domain
Certificates issued and renewed for you, plus a free .live.chajio.cloud address.
Build and runtime logs
Watch builds as they run, and see what your app prints as it serves visitors.
CPU, memory and network
Metrics for every app, from the last 15 minutes to the last 30 days.
Zero-downtime deploys
A new version takes visitors only once its health check passes.
Pricing
Ruby on Rails hosting plans
Free Plan
5GB DB Storage · 2GB RAM
Then Ksh 350/mo
- 2 vCPU
- 2 Apps
- 1 Database
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Growth Plan
10GB DB Storage · 2GB RAM
- 3 vCPU
- 4 Apps
- 2 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Business Plan
20GB DB Storage · 4GB RAM
- 4 vCPU
- 6 Apps
- 3 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Pro Plan
30GB DB Storage · 8GB RAM
- 8 vCPU
- 10 Apps
- 5 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
FAQ
Ruby on Rails hosting questions
No, and we recommend deleting it. It works, but in our tests it took over 35 minutes to build, close to the 45-minute limit, while the same app built in about 6 minutes without it. Without it, add a Procfile that runs db:prepare and a ruby line in your Gemfile.
The one in the RUBY VERSION section of Gemfile.lock. Add ruby file: ".ruby-version" to your Gemfile and run bundle lock to write it there. A .ruby-version file on its own is not read.
/up, the health route every new Rails app has. A new app has no home page in production, so the default path, /, returns 404 and the deploy never becomes ready.
No. Apps have no permanent disk, so a SQLite file would be lost on every deploy, and each of the two copies would have its own. Use the managed PostgreSQL database included in your plan.
There is no managed Redis or separate worker process, so Sidekiq has nowhere to run. Solid Queue, the Rails 8 default, keeps jobs in PostgreSQL and runs them inside Puma with SOLID_QUEUE_IN_PUMA=true.
No. HTTPS is handled before requests reach your app, and Rails already sees them as secure, with the visitor’s real IP address. Leave force_ssl and assume_ssl as rails new left them.
You can start on the Free plan: free for your first month, then Ksh 350 a month, with 2 vCPU, 2GB RAM, 2 apps and a managed database. The Growth, Business and Pro plans add more CPU, memory, apps and databases as you grow.
Yes. We accept M-Pesa, Visa, Mastercard, PayPal, and bank transfers, and every plan is priced in Kenyan shillings. M-Pesa is the quickest option for Kenyan customers.
More App Hosting
Deploying something else?
Deploy your Ruby on Rails app today
Your first month is on us, with a managed database and two replicas from day one.