diff --git a/Makefile b/Makefile index 6967cb5b..6c3d76fa 100644 --- a/Makefile +++ b/Makefile @@ -6,4 +6,10 @@ PROTO_OUT := lib/gen proto: $(foreach PROTO_DIR,$(PROTO_DIRS),bundle exec grpc_tools_ruby_protoc -Iproto --ruby_out=$(PROTO_OUT) --grpc_out=$(PROTO_OUT) $(PROTO_DIR)*.proto;) + # Need to only load imports if not disabled + sed -i "/require 'temporal/ s|\(.*\)|\1 unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1'|" \ + lib/gen/temporal/api/operatorservice/v1/service_services_pb.rb + sed -i "/require 'temporal/ s|\(.*\)|\1 unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1'|" \ + lib/gen/temporal/api/workflowservice/v1/service_services_pb.rb + .PHONY: proto diff --git a/lib/gen/temporal/api/operatorservice/v1/service_services_pb.rb b/lib/gen/temporal/api/operatorservice/v1/service_services_pb.rb index 44a8c571..1dad652f 100644 --- a/lib/gen/temporal/api/operatorservice/v1/service_services_pb.rb +++ b/lib/gen/temporal/api/operatorservice/v1/service_services_pb.rb @@ -25,7 +25,7 @@ # require 'grpc' -require 'temporal/api/operatorservice/v1/service_pb' +require 'temporal/api/operatorservice/v1/service_pb' unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1' module Temporalio module Api diff --git a/lib/gen/temporal/api/workflowservice/v1/service_services_pb.rb b/lib/gen/temporal/api/workflowservice/v1/service_services_pb.rb index 3acb9d26..e7a42c93 100644 --- a/lib/gen/temporal/api/workflowservice/v1/service_services_pb.rb +++ b/lib/gen/temporal/api/workflowservice/v1/service_services_pb.rb @@ -25,7 +25,7 @@ # require 'grpc' -require 'temporal/api/workflowservice/v1/service_pb' +require 'temporal/api/workflowservice/v1/service_pb' unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1' module Temporalio module Api diff --git a/lib/temporal.rb b/lib/temporal.rb index b9f49d55..91b69cb3 100644 --- a/lib/temporal.rb +++ b/lib/temporal.rb @@ -1,5 +1,7 @@ -# Protoc wants all of its generated files on the LOAD_PATH -$LOAD_PATH << File.expand_path('./gen', __dir__) +# Protoc wants all of its generated files on the LOAD_PATH. Only require protos if not disabled. +unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1' + $LOAD_PATH << File.expand_path('./gen', __dir__) +end require 'securerandom' require 'forwardable' diff --git a/lib/temporal/connection/grpc.rb b/lib/temporal/connection/grpc.rb index f35d2dc3..9bbed7b7 100644 --- a/lib/temporal/connection/grpc.rb +++ b/lib/temporal/connection/grpc.rb @@ -3,11 +3,6 @@ require 'google/protobuf/well_known_types' require 'securerandom' require 'json' -require 'gen/temporal/api/filter/v1/message_pb' -require 'gen/temporal/api/workflowservice/v1/service_services_pb' -require 'gen/temporal/api/operatorservice/v1/service_services_pb' -require 'gen/temporal/api/enums/v1/workflow_pb' -require 'gen/temporal/api/enums/v1/common_pb' require 'temporal/connection/errors' require 'temporal/connection/interceptors/client_name_version_interceptor' require 'temporal/connection/serializer' @@ -16,6 +11,17 @@ require 'temporal/connection/serializer/schedule' require 'temporal/connection/serializer/workflow_id_reuse_policy' +# Only require protos if not disabled. This env var is commonly set to work alongside the temporalio/sdk-ruby project. +unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1' + require 'gen/temporal/api/filter/v1/message_pb' + require 'gen/temporal/api/enums/v1/workflow_pb' + require 'gen/temporal/api/enums/v1/common_pb' +end + +# These are gRPC stubs, not protos, and therefore are not disabled when protos are +require 'gen/temporal/api/workflowservice/v1/service_services_pb' +require 'gen/temporal/api/operatorservice/v1/service_services_pb' + module Temporal module Connection class GRPC diff --git a/lib/temporal/connection/serializer/base.rb b/lib/temporal/connection/serializer/base.rb index 79e8767a..595a73b6 100644 --- a/lib/temporal/connection/serializer/base.rb +++ b/lib/temporal/connection/serializer/base.rb @@ -1,6 +1,10 @@ require 'oj' -require 'gen/temporal/api/common/v1/message_pb' -require 'gen/temporal/api/command/v1/message_pb' + +# Only require protos if not disabled +unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1' + require 'gen/temporal/api/common/v1/message_pb' + require 'gen/temporal/api/command/v1/message_pb' +end module Temporal module Connection diff --git a/lib/temporal/testing/replay_tester.rb b/lib/temporal/testing/replay_tester.rb index 6a98c86e..a08617a8 100644 --- a/lib/temporal/testing/replay_tester.rb +++ b/lib/temporal/testing/replay_tester.rb @@ -1,4 +1,3 @@ -require "gen/temporal/api/history/v1/message_pb" require "json" require "temporal/errors" require "temporal/metadata/workflow_task" @@ -6,6 +5,11 @@ require "temporal/workflow/executor" require "temporal/workflow/stack_trace_tracker" +# Only require protos if not disabled +unless ENV['COINBASE_TEMPORAL_RUBY_DISABLE_PROTO_LOAD'] == '1' + require "gen/temporal/api/history/v1/message_pb" +end + module Temporal module Testing class ReplayError < StandardError