lib/trailblazer/operation/public_call.rb in trailblazer-operation-0.6.6 vs lib/trailblazer/operation/public_call.rb in trailblazer-operation-0.7.0
- old
+ new
@@ -11,31 +11,34 @@
# get removed in future versions of TRB. Currently, we use Operation::__call__ as an alternative.
#
#
# @note Do not override this method as it will be removed in future versions. Also, you will break tracing.
# @return Operation::Railway::Result binary result object
- def call(options = {}, *args)
- return call_with_circuit_interface(options, *args) if options.is_a?(Array) # This is kind of a hack that could be well hidden if Ruby had method overloading. Goal is to simplify the call/__call__ thing as we're fading out Operation::call anyway.
+ def call(options = {}, flow_options = {}, **circuit_options)
+ return call_with_circuit_interface(options, **circuit_options) if options.is_a?(Array) # This is kind of a hack that could be well hidden if Ruby had method overloading. Goal is to simplify the call/__call__ thing as we're fading out Operation::call anyway.
- call_with_public_interface(options, *args)
+ call_with_public_interface(options, flow_options, **circuit_options)
end
# Default {@activity} call interface which doesn't accept {circuit_options}
#
# @param [Array] args => [ctx, flow_options]
#
# @return [Operation::Railway::Result]
#
# @private
- def call_with_public_interface(options, flow_options = {})
+ def call_with_public_interface(options, flow_options, invoke_class: Activity::TaskWrap, **circuit_options)
flow_options = flow_options_for_public_call(flow_options)
+
+ options = circuit_options.any? ? circuit_options : options # This is needed in Ruby 3 for {Create.(params: {})} calls.
+
+
ctx = options_for_public_call(options, flow_options)
# call the activity.
# This will result in invoking {::call_with_circuit_interface}.
- # last_signal, (options, flow_options) = Activity::TaskWrap.invoke(self, [ctx, {}], {})
- signal, (ctx, flow_options) = Activity::TaskWrap.invoke(
+ signal, (ctx, flow_options) = invoke_class.invoke(
@activity,
[ctx, flow_options],
exec_context: new
)
@@ -49,12 +52,12 @@
# @param [Hash] circuit_options - Options to configure activity circuit
#
# @return [signal, [ctx, flow_options]]
#
# @private
- def call_with_circuit_interface(args, circuit_options)
- strategy_call(args, circuit_options) # FastTrack#call
+ def call_with_circuit_interface(args, **circuit_options)
+ strategy_call(args, **circuit_options) # FastTrack#call
end
def options_for_public_call(*args)
Operation::PublicCall.options_for_public_call(*args)
end
@@ -66,8 +69,14 @@
end
# @semi=public
def flow_options_for_public_call(options = {})
options
+ end
+
+ # TODO: remove when we stop supporting < 3.0.
+ def call_with_flow_options(options, flow_options)
+ raise "[Trailblazer] `Operation.call_with_flow_options is deprecated in Ruby 3.0. Use `Operation.(options, flow_options)`" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.0.0")
+ call_with_public_interface(options, flow_options, {invoke_class: Activity::TaskWrap})
end
end
end