Your Rails app does not need Temporal, just a great workflow engine.
And geneva_drive is the one you want.
Durable execution has become a reason to bolt a second runtime onto a perfectly good
Rails app: another service to run, another language to hire for, another dashboard
nobody checks — all to track state your database was already built to hold. geneva_drive
paves you a shorter road. Just use Rails. geneva_drive uses your database, models and
the ActiveJob queue you already have, and ships the moment you bundle.
You declare a workflow as a sequence of discrete steps. Each one begins and ends at rest — committed, resumable, safe to retry. A failure stops the mechanism where it stands instead of unwinding it, and when the pin comes around again the work resumes from exactly that frame. No double sends, no orphaned state, no duplicate jobs.
THE ENTIRE INTEGRATION
A class, some steps, and the queue you already run.
No sidecar process. No gRPC. No workflow SDK with its own opinion about what a function is. You write Ruby, the steps commit to your database, and ActiveJob does the rest.
class SignupWorkflow < GenevaDrive::Workflow
step :send_welcome_email do
WelcomeMailer.welcome(hero).deliver_later
end
step :send_reminder, wait: 2.days do
ReminderMailer.remind(hero).deliver_later
end
step :complete_onboarding, wait: 7.days do
hero.update!(onboarding_completed: true)
end
endWhat you do not have to run
No gRPC
No protobufs. No codegen step. No half-abandoned gem segfaulting you because it spun up a thread you never asked for. And your app already runs an HTTP server, thank you.
No extra database
You already run one. You already back it up. You already know how to query it.
SQLite? Fine. MySQL? Perfect. Postgres? Sublime. SELECT is the debugger.
No extra services
You never asked for a zoo, so why would you need a ZooKeeper? Do you really need sidecars, replicas, quorums, and a few ops people just for your durable execution? The infra you already run is fine!
Get started (LGPL)
$ bundle add geneva_drive
$ bin/rails generate geneva_drive:install
$ bin/rails db:migrateThe generator adds two tables and a mountable engine. Your first workflow can ship in the same pull request.
COMMERCIAL LICENSE
The Admin makes it better
Live workflow views, a timeline inspector for every step, per-execution backtraces and job details — a Rails engine you mount, with no dependencies beyond Rails and geneva_drive itself.