Skip to content

Commit f3b34b4

Browse files
authored
Coinbase Ruby guide (#304)
1 parent 3f457cb commit f3b34b4

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ opinions. Please communicate with us on [Slack](https://t.mp/slack) in the `#rub
7878
- [Forking](#forking)
7979
- [Ractors](#ractors)
8080
- [Platform Support](#platform-support)
81+
- [Migration from Coinbase Ruby SDK](#migration-from-coinbase-ruby-sdk)
8182
- [Development](#development)
8283
- [Build](#build)
8384
- [Build Platform-specific Gem](#build-platform-specific-gem)
@@ -1249,6 +1250,40 @@ section for how to build a the repository.
12491250
The SDK works on Ruby 3.2+, but due to [an issue](https://github.com/temporalio/sdk-ruby/issues/162), fibers (and
12501251
`async` gem) are only supported on Ruby versions 3.3 and newer.
12511252

1253+
### Migration from Coinbase Ruby SDK
1254+
1255+
The [Coinbase Ruby SDK](https://github.com/coinbase/temporal-ruby) predates this official Temporal SDK and has been a
1256+
popular approach to developing in Temporal with Ruby. While Temporal encourages users to use the official SDK to get new
1257+
features and support, this section covers differences from the Coinbase SDK to help those looking to migrate.
1258+
1259+
See [this Ruby sample](https://github.com/temporalio/samples-ruby/tree/main/coinbase_ruby) which demonstrates
1260+
interoperability between Coinbase Ruby and Temporal Ruby clients, workflows, and activities. Specifically, it discusses
1261+
how to disable API class loading on the Coinbase Ruby side if needing to use both dependencies in the same project,
1262+
since two sets of API classes cannot both be present.
1263+
1264+
Migration cannot be done on a live, running workflow. Overall, Coinbase Ruby workflow events are incompatible with
1265+
Temporal Ruby workflow events at runtime, so both SDK versions cannot have workers for the same task queue. A live
1266+
workflow migration cannot occur, an separate task queue would be needed. However, Coinbase Ruby clients, workflows, and
1267+
activities can be used with Temporal Ruby clients, workflows, and activities in either direction. Migrating from the
1268+
Coinbase Ruby SDK to the Temporal Ruby SDK would be similar to migrating from Temporal Go SDK to Temporal Java SDK. You
1269+
can interact across, but the workflow events are incompatible and therefore the task queues cannot be served by both at
1270+
the same time.
1271+
1272+
Here is an overview of the primary differences between the SDKs:
1273+
1274+
| Feature | Coinbase Ruby | Temporal Ruby |
1275+
| --- | --- | --- |
1276+
| Base module | `Temporal::` | `Temporalio::` |
1277+
| Client + start workflow | Global `Temporal.configure` + `Temporal.start_workflow` | `Temporalio::Client.connect` + `my_client.start_workflow` |
1278+
| Client implementation | Ruby gRPC | Rust gRPC |
1279+
| Activity definition | Extend `Temporal::Activity` + impl `execute` | Extend `Temporalio::Activity::Definition` + impl `execute` |
1280+
| Workflow definition | Extend `Temporal::Workflow` + impl `execute` | Extend `Temporalio::Workflow::Definition` + impl `execute` |
1281+
| Invoke activity from workflow | `MyActivity.execute!` or `workflow.execute_activity!(MyActivity)` | `Workflow.execute_activity(MyActivity)` |
1282+
| Handle signal/query/update in workflow | `workflow.on_signal`/`workflow.on_query`/update-unsupported | Decorate with `workflow_signal`/`workflow_query`/`workflow_update` |
1283+
| Run worker | `Temporal::Worker.new` + `start` | `Temporalio::Worker.new` + `run` |
1284+
1285+
This is just a high-level overview, there are many more differences on more specific Temporal components.
1286+
12521287
## Development
12531288

12541289
### Build

0 commit comments

Comments
 (0)