@@ -78,6 +78,7 @@ opinions. Please communicate with us on [Slack](https://t.mp/slack) in the `#rub
78
78
- [ Forking] ( #forking )
79
79
- [ Ractors] ( #ractors )
80
80
- [ Platform Support] ( #platform-support )
81
+ - [ Migration from Coinbase Ruby SDK] ( #migration-from-coinbase-ruby-sdk )
81
82
- [ Development] ( #development )
82
83
- [ Build] ( #build )
83
84
- [ Build Platform-specific Gem] ( #build-platform-specific-gem )
@@ -1249,6 +1250,40 @@ section for how to build a the repository.
1249
1250
The SDK works on Ruby 3.2+, but due to [ an issue] ( https://github.com/temporalio/sdk-ruby/issues/162 ) , fibers (and
1250
1251
` async ` gem) are only supported on Ruby versions 3.3 and newer.
1251
1252
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
+
1252
1287
## Development
1253
1288
1254
1289
### Build
0 commit comments