Module: ActiveJob::Temporal::DependencyOptions
- Defined in:
- lib/activejob/temporal/dependency_options.rb
Constant Summary collapse
- JOB_CLASS_NAME_PATTERN =
/\A[A-Z]\w*(?:::[A-Z]\w*)*\z/- SAFE_ID_PATTERN =
/\A[A-Za-z0-9_.:-]+\z/- FAILURE_POLICIES =
%i[fail ignore].freeze
Instance Attribute Summary collapse
-
#temporal_dependencies ⇒ Object
readonly
Returns the value of attribute temporal_dependencies.
-
#temporal_dependency_failure_policy ⇒ Object
readonly
Returns the value of attribute temporal_dependency_failure_policy.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#temporal_dependencies ⇒ Object (readonly)
Returns the value of attribute temporal_dependencies.
13 14 15 |
# File 'lib/activejob/temporal/dependency_options.rb', line 13 def temporal_dependencies @temporal_dependencies end |
#temporal_dependency_failure_policy ⇒ Object (readonly)
Returns the value of attribute temporal_dependency_failure_policy.
13 14 15 |
# File 'lib/activejob/temporal/dependency_options.rb', line 13 def temporal_dependency_failure_policy @temporal_dependency_failure_policy end |
Class Method Details
.normalize(depends_on) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/activejob/temporal/dependency_options.rb', line 15 def self.normalize(depends_on) dependencies = depends_on.is_a?(Array) ? depends_on : [depends_on] raise ArgumentError, "depends_on must contain at least one job dependency" if dependencies.empty? dependencies.map { |dependency| normalize_dependency(dependency) } end |
.normalize_failure_policy(policy) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/activejob/temporal/dependency_options.rb', line 22 def self.normalize_failure_policy(policy) normalized_policy = policy.to_sym return normalized_policy if FAILURE_POLICIES.include?(normalized_policy) raise ArgumentError, "on_dependency_failure must be :fail or :ignore" rescue NoMethodError raise ArgumentError, "on_dependency_failure must be :fail or :ignore" end |
Instance Method Details
#set(options = {}) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/activejob/temporal/dependency_options.rb', line 100 def set( = {}) = .dup dependencies_configured = .key?(:depends_on) failure_policy_configured = .key?(:on_dependency_failure) normalized_dependencies = if dependencies_configured DependencyOptions.normalize(.delete(:depends_on)) end normalized_failure_policy = normalize_dependency_failure_policy( .delete(:on_dependency_failure), failure_policy_configured ) if failure_policy_configured && !dependencies_configured && normalized_dependencies.nil? raise ArgumentError, "on_dependency_failure requires depends_on" end super().tap do @temporal_dependencies = normalized_dependencies if dependencies_configured @temporal_dependency_failure_policy = normalized_failure_policy || :fail if dependencies_configured end end |