@@ -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.
12491250The 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