job-workflow 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +91 -0
  4. data/CHANGELOG.md +23 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +47 -0
  7. data/Rakefile +55 -0
  8. data/Steepfile +10 -0
  9. data/guides/API_REFERENCE.md +112 -0
  10. data/guides/BEST_PRACTICES.md +113 -0
  11. data/guides/CACHE_STORE_INTEGRATION.md +145 -0
  12. data/guides/CONDITIONAL_EXECUTION.md +66 -0
  13. data/guides/DEPENDENCY_WAIT.md +386 -0
  14. data/guides/DRY_RUN.md +390 -0
  15. data/guides/DSL_BASICS.md +216 -0
  16. data/guides/ERROR_HANDLING.md +187 -0
  17. data/guides/GETTING_STARTED.md +524 -0
  18. data/guides/INSTRUMENTATION.md +131 -0
  19. data/guides/LIFECYCLE_HOOKS.md +415 -0
  20. data/guides/NAMESPACES.md +75 -0
  21. data/guides/OPENTELEMETRY_INTEGRATION.md +86 -0
  22. data/guides/PARALLEL_PROCESSING.md +302 -0
  23. data/guides/PRODUCTION_DEPLOYMENT.md +110 -0
  24. data/guides/QUEUE_MANAGEMENT.md +141 -0
  25. data/guides/README.md +174 -0
  26. data/guides/SCHEDULED_JOBS.md +165 -0
  27. data/guides/STRUCTURED_LOGGING.md +268 -0
  28. data/guides/TASK_OUTPUTS.md +240 -0
  29. data/guides/TESTING_STRATEGY.md +56 -0
  30. data/guides/THROTTLING.md +198 -0
  31. data/guides/TROUBLESHOOTING.md +53 -0
  32. data/guides/WORKFLOW_COMPOSITION.md +675 -0
  33. data/guides/WORKFLOW_STATUS_QUERY.md +288 -0
  34. data/lib/job-workflow.rb +3 -0
  35. data/lib/job_workflow/argument_def.rb +16 -0
  36. data/lib/job_workflow/arguments.rb +40 -0
  37. data/lib/job_workflow/auto_scaling/adapter/aws_adapter.rb +66 -0
  38. data/lib/job_workflow/auto_scaling/adapter.rb +31 -0
  39. data/lib/job_workflow/auto_scaling/configuration.rb +85 -0
  40. data/lib/job_workflow/auto_scaling/executor.rb +43 -0
  41. data/lib/job_workflow/auto_scaling.rb +69 -0
  42. data/lib/job_workflow/cache_store_adapters.rb +46 -0
  43. data/lib/job_workflow/context.rb +352 -0
  44. data/lib/job_workflow/dry_run_config.rb +31 -0
  45. data/lib/job_workflow/dsl.rb +236 -0
  46. data/lib/job_workflow/error_hook.rb +24 -0
  47. data/lib/job_workflow/hook.rb +24 -0
  48. data/lib/job_workflow/hook_registry.rb +66 -0
  49. data/lib/job_workflow/instrumentation/log_subscriber.rb +194 -0
  50. data/lib/job_workflow/instrumentation/opentelemetry_subscriber.rb +221 -0
  51. data/lib/job_workflow/instrumentation.rb +257 -0
  52. data/lib/job_workflow/job_status.rb +92 -0
  53. data/lib/job_workflow/logger.rb +86 -0
  54. data/lib/job_workflow/namespace.rb +36 -0
  55. data/lib/job_workflow/output.rb +81 -0
  56. data/lib/job_workflow/output_def.rb +14 -0
  57. data/lib/job_workflow/queue.rb +74 -0
  58. data/lib/job_workflow/queue_adapter.rb +38 -0
  59. data/lib/job_workflow/queue_adapters/abstract.rb +87 -0
  60. data/lib/job_workflow/queue_adapters/null_adapter.rb +127 -0
  61. data/lib/job_workflow/queue_adapters/solid_queue_adapter.rb +224 -0
  62. data/lib/job_workflow/runner.rb +173 -0
  63. data/lib/job_workflow/schedule.rb +46 -0
  64. data/lib/job_workflow/semaphore.rb +71 -0
  65. data/lib/job_workflow/task.rb +83 -0
  66. data/lib/job_workflow/task_callable.rb +43 -0
  67. data/lib/job_workflow/task_context.rb +70 -0
  68. data/lib/job_workflow/task_dependency_wait.rb +66 -0
  69. data/lib/job_workflow/task_enqueue.rb +50 -0
  70. data/lib/job_workflow/task_graph.rb +43 -0
  71. data/lib/job_workflow/task_job_status.rb +70 -0
  72. data/lib/job_workflow/task_output.rb +51 -0
  73. data/lib/job_workflow/task_retry.rb +64 -0
  74. data/lib/job_workflow/task_throttle.rb +46 -0
  75. data/lib/job_workflow/version.rb +5 -0
  76. data/lib/job_workflow/workflow.rb +87 -0
  77. data/lib/job_workflow/workflow_status.rb +112 -0
  78. data/lib/job_workflow.rb +59 -0
  79. data/rbs_collection.lock.yaml +172 -0
  80. data/rbs_collection.yaml +14 -0
  81. data/sig/generated/job-workflow.rbs +2 -0
  82. data/sig/generated/job_workflow/argument_def.rbs +14 -0
  83. data/sig/generated/job_workflow/arguments.rbs +26 -0
  84. data/sig/generated/job_workflow/auto_scaling/adapter/aws_adapter.rbs +32 -0
  85. data/sig/generated/job_workflow/auto_scaling/adapter.rbs +22 -0
  86. data/sig/generated/job_workflow/auto_scaling/configuration.rbs +50 -0
  87. data/sig/generated/job_workflow/auto_scaling/executor.rbs +29 -0
  88. data/sig/generated/job_workflow/auto_scaling.rbs +47 -0
  89. data/sig/generated/job_workflow/cache_store_adapters.rbs +28 -0
  90. data/sig/generated/job_workflow/context.rbs +155 -0
  91. data/sig/generated/job_workflow/dry_run_config.rbs +16 -0
  92. data/sig/generated/job_workflow/dsl.rbs +117 -0
  93. data/sig/generated/job_workflow/error_hook.rbs +18 -0
  94. data/sig/generated/job_workflow/hook.rbs +18 -0
  95. data/sig/generated/job_workflow/hook_registry.rbs +47 -0
  96. data/sig/generated/job_workflow/instrumentation/log_subscriber.rbs +102 -0
  97. data/sig/generated/job_workflow/instrumentation/opentelemetry_subscriber.rbs +113 -0
  98. data/sig/generated/job_workflow/instrumentation.rbs +138 -0
  99. data/sig/generated/job_workflow/job_status.rbs +46 -0
  100. data/sig/generated/job_workflow/logger.rbs +56 -0
  101. data/sig/generated/job_workflow/namespace.rbs +24 -0
  102. data/sig/generated/job_workflow/output.rbs +39 -0
  103. data/sig/generated/job_workflow/output_def.rbs +12 -0
  104. data/sig/generated/job_workflow/queue.rbs +49 -0
  105. data/sig/generated/job_workflow/queue_adapter.rbs +18 -0
  106. data/sig/generated/job_workflow/queue_adapters/abstract.rbs +56 -0
  107. data/sig/generated/job_workflow/queue_adapters/null_adapter.rbs +73 -0
  108. data/sig/generated/job_workflow/queue_adapters/solid_queue_adapter.rbs +111 -0
  109. data/sig/generated/job_workflow/runner.rbs +66 -0
  110. data/sig/generated/job_workflow/schedule.rbs +34 -0
  111. data/sig/generated/job_workflow/semaphore.rbs +37 -0
  112. data/sig/generated/job_workflow/task.rbs +60 -0
  113. data/sig/generated/job_workflow/task_callable.rbs +30 -0
  114. data/sig/generated/job_workflow/task_context.rbs +52 -0
  115. data/sig/generated/job_workflow/task_dependency_wait.rbs +42 -0
  116. data/sig/generated/job_workflow/task_enqueue.rbs +27 -0
  117. data/sig/generated/job_workflow/task_graph.rbs +27 -0
  118. data/sig/generated/job_workflow/task_job_status.rbs +42 -0
  119. data/sig/generated/job_workflow/task_output.rbs +29 -0
  120. data/sig/generated/job_workflow/task_retry.rbs +30 -0
  121. data/sig/generated/job_workflow/task_throttle.rbs +20 -0
  122. data/sig/generated/job_workflow/version.rbs +5 -0
  123. data/sig/generated/job_workflow/workflow.rbs +48 -0
  124. data/sig/generated/job_workflow/workflow_status.rbs +55 -0
  125. data/sig/generated/job_workflow.rbs +8 -0
  126. data/sig-private/activejob.rbs +35 -0
  127. data/sig-private/activesupport.rbs +23 -0
  128. data/sig-private/aws.rbs +32 -0
  129. data/sig-private/opentelemetry.rbs +40 -0
  130. data/sig-private/solid_queue.rbs +108 -0
  131. data/tmp/.keep +0 -0
  132. metadata +190 -0
@@ -0,0 +1,40 @@
1
+ module OpenTelemetry
2
+ def self.tracer_provider: () -> OpenTelemetry::Trace::TracerProvider
3
+ def self.handle_error: (exception: StandardError, message: String) -> void
4
+ def self.respond_to?: (Symbol) -> bool
5
+
6
+ module Trace
7
+ def self.context_with_span: (OpenTelemetry::Trace::Span) -> untyped
8
+
9
+ class TracerProvider
10
+ def tracer: (String, String) -> OpenTelemetry::Trace::Tracer
11
+ end
12
+
13
+ class Tracer
14
+ def start_span: (String, ?kind: Symbol, ?attributes: Hash[String, untyped]) -> OpenTelemetry::Trace::Span
15
+ end
16
+
17
+ class Span
18
+ def finish: () -> void
19
+ def record_exception: (StandardError) -> void
20
+ def status=: (Status) -> void
21
+ def status: () -> Status
22
+ end
23
+
24
+ class Status
25
+ UNSET: Integer
26
+ OK: Integer
27
+ ERROR: Integer
28
+
29
+ def self.ok: () -> Status
30
+ def self.error: (String) -> Status
31
+
32
+ def code: () -> Integer
33
+ end
34
+ end
35
+
36
+ module Context
37
+ def self.attach: (untyped) -> untyped
38
+ def self.detach: (untyped) -> void
39
+ end
40
+ end
@@ -0,0 +1,108 @@
1
+ module SolidQueue
2
+ class Queue
3
+ def self.find_by_name: (String) -> Queue
4
+
5
+ def paused?: () -> bool
6
+
7
+ def pause: () -> Pause
8
+
9
+ def resume: () -> Integer
10
+
11
+ def latency: () -> Integer
12
+
13
+ def size: () -> Integer
14
+
15
+ def clear: () -> void
16
+ end
17
+
18
+ class Pause < Record
19
+ def self.pluck: (Symbol) -> Array[String]
20
+ end
21
+
22
+ class Record < ActiveRecord::Base
23
+ end
24
+
25
+ class Job < Record
26
+ class EnqueueError < StandardError
27
+ end
28
+
29
+ module Executable
30
+ def finished?: () -> bool
31
+
32
+ def ready?: () -> bool
33
+
34
+ def claimed?: () -> bool
35
+
36
+ def failed?: () -> bool
37
+ end
38
+
39
+ module Clearable
40
+ end
41
+
42
+ module Recurrable
43
+ end
44
+
45
+ class ActiveRecord_Relation < ActiveRecord::Relation
46
+ include _ActiveRecord_Relation[Job, Integer]
47
+ end
48
+
49
+ extend _ActiveRecord_Relation_ClassMethods[Job, ActiveRecord_Relation, Integer]
50
+
51
+ include Executable
52
+ include Clearable
53
+ include Recurrable
54
+
55
+ def active_job_id: () -> String
56
+
57
+ def class_name: () -> String
58
+
59
+ def queue_name: () -> String
60
+
61
+ def arguments: () -> Hash[String, untyped]
62
+
63
+ def claimed_execution: () -> ClaimedExecution?
64
+
65
+ def prepare_for_execution: () -> void
66
+ end
67
+
68
+ class ClaimedExecution < Record
69
+ class Result
70
+ attr_reader success: bool
71
+ attr_reader error: Exception?
72
+
73
+ def success?: () -> bool
74
+ end
75
+
76
+ def self.exists?: (Integer) -> bool
77
+
78
+ def job: () -> Job
79
+
80
+ def destroy!: () -> bool
81
+
82
+ private
83
+
84
+ def finished: () -> self
85
+ end
86
+
87
+ class Semaphore < Record
88
+ # Interface expected by wait/signal
89
+ interface _SemaphoreJob
90
+ def concurrency_key: () -> String
91
+ def concurrency_limit: () -> Integer
92
+ def concurrency_duration: () -> ActiveSupport::Duration
93
+ end
94
+
95
+ def self.wait: (_SemaphoreJob job) -> bool
96
+ def self.signal: (_SemaphoreJob job) -> bool
97
+ def self.signal_all: (Array[_SemaphoreJob] jobs) -> Integer
98
+ end
99
+
100
+ class Configuration
101
+ def recurring_tasks_config: () -> Hash[Symbol, Hash[Symbol, untyped]]
102
+ end
103
+
104
+ class Worker
105
+ def self.on_worker_stop: (Proc) -> void
106
+ def self.lifecycle_hooks: () -> Hash[Symbol, Array[Proc]]
107
+ end
108
+ end
data/tmp/.keep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: job-workflow
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - shoma07
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: activejob
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '8.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '8.1'
26
+ description: Workflow orchestration on ActiveJob with declarative DSL and parallel
27
+ processing.
28
+ email:
29
+ - 23730734+shoma07@users.noreply.github.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rspec"
35
+ - ".rubocop.yml"
36
+ - CHANGELOG.md
37
+ - LICENSE.txt
38
+ - README.md
39
+ - Rakefile
40
+ - Steepfile
41
+ - guides/API_REFERENCE.md
42
+ - guides/BEST_PRACTICES.md
43
+ - guides/CACHE_STORE_INTEGRATION.md
44
+ - guides/CONDITIONAL_EXECUTION.md
45
+ - guides/DEPENDENCY_WAIT.md
46
+ - guides/DRY_RUN.md
47
+ - guides/DSL_BASICS.md
48
+ - guides/ERROR_HANDLING.md
49
+ - guides/GETTING_STARTED.md
50
+ - guides/INSTRUMENTATION.md
51
+ - guides/LIFECYCLE_HOOKS.md
52
+ - guides/NAMESPACES.md
53
+ - guides/OPENTELEMETRY_INTEGRATION.md
54
+ - guides/PARALLEL_PROCESSING.md
55
+ - guides/PRODUCTION_DEPLOYMENT.md
56
+ - guides/QUEUE_MANAGEMENT.md
57
+ - guides/README.md
58
+ - guides/SCHEDULED_JOBS.md
59
+ - guides/STRUCTURED_LOGGING.md
60
+ - guides/TASK_OUTPUTS.md
61
+ - guides/TESTING_STRATEGY.md
62
+ - guides/THROTTLING.md
63
+ - guides/TROUBLESHOOTING.md
64
+ - guides/WORKFLOW_COMPOSITION.md
65
+ - guides/WORKFLOW_STATUS_QUERY.md
66
+ - lib/job-workflow.rb
67
+ - lib/job_workflow.rb
68
+ - lib/job_workflow/argument_def.rb
69
+ - lib/job_workflow/arguments.rb
70
+ - lib/job_workflow/auto_scaling.rb
71
+ - lib/job_workflow/auto_scaling/adapter.rb
72
+ - lib/job_workflow/auto_scaling/adapter/aws_adapter.rb
73
+ - lib/job_workflow/auto_scaling/configuration.rb
74
+ - lib/job_workflow/auto_scaling/executor.rb
75
+ - lib/job_workflow/cache_store_adapters.rb
76
+ - lib/job_workflow/context.rb
77
+ - lib/job_workflow/dry_run_config.rb
78
+ - lib/job_workflow/dsl.rb
79
+ - lib/job_workflow/error_hook.rb
80
+ - lib/job_workflow/hook.rb
81
+ - lib/job_workflow/hook_registry.rb
82
+ - lib/job_workflow/instrumentation.rb
83
+ - lib/job_workflow/instrumentation/log_subscriber.rb
84
+ - lib/job_workflow/instrumentation/opentelemetry_subscriber.rb
85
+ - lib/job_workflow/job_status.rb
86
+ - lib/job_workflow/logger.rb
87
+ - lib/job_workflow/namespace.rb
88
+ - lib/job_workflow/output.rb
89
+ - lib/job_workflow/output_def.rb
90
+ - lib/job_workflow/queue.rb
91
+ - lib/job_workflow/queue_adapter.rb
92
+ - lib/job_workflow/queue_adapters/abstract.rb
93
+ - lib/job_workflow/queue_adapters/null_adapter.rb
94
+ - lib/job_workflow/queue_adapters/solid_queue_adapter.rb
95
+ - lib/job_workflow/runner.rb
96
+ - lib/job_workflow/schedule.rb
97
+ - lib/job_workflow/semaphore.rb
98
+ - lib/job_workflow/task.rb
99
+ - lib/job_workflow/task_callable.rb
100
+ - lib/job_workflow/task_context.rb
101
+ - lib/job_workflow/task_dependency_wait.rb
102
+ - lib/job_workflow/task_enqueue.rb
103
+ - lib/job_workflow/task_graph.rb
104
+ - lib/job_workflow/task_job_status.rb
105
+ - lib/job_workflow/task_output.rb
106
+ - lib/job_workflow/task_retry.rb
107
+ - lib/job_workflow/task_throttle.rb
108
+ - lib/job_workflow/version.rb
109
+ - lib/job_workflow/workflow.rb
110
+ - lib/job_workflow/workflow_status.rb
111
+ - rbs_collection.lock.yaml
112
+ - rbs_collection.yaml
113
+ - sig-private/activejob.rbs
114
+ - sig-private/activesupport.rbs
115
+ - sig-private/aws.rbs
116
+ - sig-private/opentelemetry.rbs
117
+ - sig-private/solid_queue.rbs
118
+ - sig/generated/job-workflow.rbs
119
+ - sig/generated/job_workflow.rbs
120
+ - sig/generated/job_workflow/argument_def.rbs
121
+ - sig/generated/job_workflow/arguments.rbs
122
+ - sig/generated/job_workflow/auto_scaling.rbs
123
+ - sig/generated/job_workflow/auto_scaling/adapter.rbs
124
+ - sig/generated/job_workflow/auto_scaling/adapter/aws_adapter.rbs
125
+ - sig/generated/job_workflow/auto_scaling/configuration.rbs
126
+ - sig/generated/job_workflow/auto_scaling/executor.rbs
127
+ - sig/generated/job_workflow/cache_store_adapters.rbs
128
+ - sig/generated/job_workflow/context.rbs
129
+ - sig/generated/job_workflow/dry_run_config.rbs
130
+ - sig/generated/job_workflow/dsl.rbs
131
+ - sig/generated/job_workflow/error_hook.rbs
132
+ - sig/generated/job_workflow/hook.rbs
133
+ - sig/generated/job_workflow/hook_registry.rbs
134
+ - sig/generated/job_workflow/instrumentation.rbs
135
+ - sig/generated/job_workflow/instrumentation/log_subscriber.rbs
136
+ - sig/generated/job_workflow/instrumentation/opentelemetry_subscriber.rbs
137
+ - sig/generated/job_workflow/job_status.rbs
138
+ - sig/generated/job_workflow/logger.rbs
139
+ - sig/generated/job_workflow/namespace.rbs
140
+ - sig/generated/job_workflow/output.rbs
141
+ - sig/generated/job_workflow/output_def.rbs
142
+ - sig/generated/job_workflow/queue.rbs
143
+ - sig/generated/job_workflow/queue_adapter.rbs
144
+ - sig/generated/job_workflow/queue_adapters/abstract.rbs
145
+ - sig/generated/job_workflow/queue_adapters/null_adapter.rbs
146
+ - sig/generated/job_workflow/queue_adapters/solid_queue_adapter.rbs
147
+ - sig/generated/job_workflow/runner.rbs
148
+ - sig/generated/job_workflow/schedule.rbs
149
+ - sig/generated/job_workflow/semaphore.rbs
150
+ - sig/generated/job_workflow/task.rbs
151
+ - sig/generated/job_workflow/task_callable.rbs
152
+ - sig/generated/job_workflow/task_context.rbs
153
+ - sig/generated/job_workflow/task_dependency_wait.rbs
154
+ - sig/generated/job_workflow/task_enqueue.rbs
155
+ - sig/generated/job_workflow/task_graph.rbs
156
+ - sig/generated/job_workflow/task_job_status.rbs
157
+ - sig/generated/job_workflow/task_output.rbs
158
+ - sig/generated/job_workflow/task_retry.rbs
159
+ - sig/generated/job_workflow/task_throttle.rbs
160
+ - sig/generated/job_workflow/version.rbs
161
+ - sig/generated/job_workflow/workflow.rbs
162
+ - sig/generated/job_workflow/workflow_status.rbs
163
+ - tmp/.keep
164
+ homepage: https://github.com/shoma07/job-workflow
165
+ licenses:
166
+ - MIT
167
+ metadata:
168
+ allowed_push_host: https://rubygems.org
169
+ homepage_uri: https://github.com/shoma07/job-workflow
170
+ source_code_uri: https://github.com/shoma07/job-workflow
171
+ changelog_uri: https://github.com/shoma07/job-workflow/blob/main/CHANGELOG.md
172
+ rubygems_mfa_required: 'true'
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: 3.1.0
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubygems_version: 3.6.7
188
+ specification_version: 4
189
+ summary: Declarative workflow orchestration engine for Ruby on Rails
190
+ test_files: []