acidic_job 1.0.0.rc2 → 1.0.0.rc4
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.
- checksums.yaml +4 -4
- data/.rubocop-https---www-goodcop-style-base-yml +1051 -0
- data/.rubocop.yml +4 -76
- data/Gemfile.lock +89 -81
- data/README.md +6 -6
- data/acidic_job.gemspec +0 -2
- data/app/models/acidic_job/entry.rb +9 -7
- data/app/models/acidic_job/execution.rb +45 -11
- data/app/models/acidic_job/value.rb +2 -0
- data/bin/console +3 -3
- data/lib/acidic_job/builder.rb +22 -6
- data/lib/acidic_job/context.rb +36 -20
- data/lib/acidic_job/errors.rb +22 -1
- data/lib/acidic_job/log_subscriber.rb +11 -13
- data/lib/acidic_job/plugin_context.rb +74 -0
- data/lib/acidic_job/plugins/transactional_step.rb +38 -0
- data/lib/acidic_job/serializer.rb +28 -0
- data/lib/acidic_job/serializers/job_serializer.rb +1 -1
- data/lib/acidic_job/serializers/range_serializer.rb +1 -3
- data/lib/acidic_job/testing.rb +10 -12
- data/lib/acidic_job/version.rb +1 -1
- data/lib/acidic_job/workflow.rb +104 -52
- data/lib/acidic_job.rb +7 -2
- data/lib/generators/acidic_job/install_generator.rb +5 -5
- data/lib/generators/acidic_job/templates/create_acidic_job_tables_migration.rb.erb +12 -11
- metadata +6 -30
data/lib/acidic_job.rb
CHANGED
@@ -6,7 +6,10 @@ require_relative "acidic_job/errors"
|
|
6
6
|
require_relative "acidic_job/builder"
|
7
7
|
require_relative "acidic_job/context"
|
8
8
|
require_relative "acidic_job/arguments"
|
9
|
+
require_relative "acidic_job/plugin_context"
|
10
|
+
require_relative "acidic_job/plugins/transactional_step"
|
9
11
|
require_relative "acidic_job/log_subscriber"
|
12
|
+
require_relative "acidic_job/serializer"
|
10
13
|
require_relative "acidic_job/workflow"
|
11
14
|
|
12
15
|
require "active_support"
|
@@ -15,13 +18,15 @@ module AcidicJob
|
|
15
18
|
extend self
|
16
19
|
|
17
20
|
DEFAULT_LOGGER = ActiveSupport::Logger.new($stdout)
|
18
|
-
FINISHED_RECOVERY_POINT = "
|
21
|
+
FINISHED_RECOVERY_POINT = "__ACIDIC_JOB_WORKFLOW_FINISHED__"
|
19
22
|
|
20
23
|
mattr_accessor :logger, default: DEFAULT_LOGGER
|
21
24
|
mattr_accessor :connects_to
|
25
|
+
mattr_accessor :plugins, default: [Plugins::TransactionalStep]
|
26
|
+
mattr_accessor :clear_finished_executions_after, default: 1.week
|
22
27
|
|
23
28
|
def instrument(channel, **options, &block)
|
24
|
-
ActiveSupport::Notifications.instrument("#{channel}.acidic_job", **options, &block)
|
29
|
+
ActiveSupport::Notifications.instrument("#{channel}.acidic_job", **options.deep_symbolize_keys, &block)
|
25
30
|
end
|
26
31
|
|
27
32
|
ActiveSupport.run_load_hooks(:acidic_job, self)
|
@@ -12,13 +12,13 @@ module AcidicJob
|
|
12
12
|
|
13
13
|
# Copies the migration template to db/migrate.
|
14
14
|
def copy_acidic_job_runs_migration_files
|
15
|
-
migration_template
|
16
|
-
|
17
|
-
|
15
|
+
migration_template(
|
16
|
+
"create_acidic_job_tables_migration.rb.erb",
|
17
|
+
"db/migrate/create_acidic_job_tables.rb",
|
18
|
+
migration_version: migration_version
|
19
|
+
)
|
18
20
|
end
|
19
21
|
|
20
|
-
protected
|
21
|
-
|
22
22
|
def migration_version
|
23
23
|
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
24
24
|
end
|
@@ -2,29 +2,30 @@ class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version
|
|
2
2
|
def change
|
3
3
|
create_table :acidic_job_executions, force: true do |t|
|
4
4
|
t.string :idempotency_key, null: false, index: { unique: true }
|
5
|
-
t.json :serialized_job, null: false
|
5
|
+
t.json :serialized_job, null: false
|
6
6
|
t.datetime :last_run_at, null: true
|
7
7
|
t.datetime :locked_at, null: true
|
8
8
|
t.string :recover_to, null: true
|
9
|
-
t.
|
9
|
+
t.text :definition, null: true
|
10
|
+
|
10
11
|
t.timestamps
|
11
12
|
end
|
12
13
|
|
13
14
|
create_table :acidic_job_entries do |t|
|
14
|
-
t.references :execution, null: false, foreign_key: { to_table: :acidic_job_executions }
|
15
|
-
t.string
|
16
|
-
t.string
|
17
|
-
t.datetime
|
18
|
-
t.
|
15
|
+
t.references :execution, null: false, foreign_key: { to_table: :acidic_job_executions, on_delete: :cascade }
|
16
|
+
t.string :step, null: false
|
17
|
+
t.string :action, null: false
|
18
|
+
t.datetime :timestamp, null: false
|
19
|
+
t.text :data, null: true
|
19
20
|
|
20
21
|
t.timestamps
|
21
22
|
end
|
22
|
-
add_index :acidic_job_entries, [:execution_id, :step]
|
23
|
+
add_index :acidic_job_entries, [:execution_id, :step, :action]
|
23
24
|
|
24
25
|
create_table :acidic_job_values do |t|
|
25
|
-
t.references :execution, null: false, foreign_key: { to_table: :acidic_job_executions }
|
26
|
-
t.string
|
27
|
-
t.
|
26
|
+
t.references :execution, null: false, foreign_key: { to_table: :acidic_job_executions, on_delete: :cascade }
|
27
|
+
t.string :key, null: false
|
28
|
+
t.text :value, null: false
|
28
29
|
|
29
30
|
t.timestamps
|
30
31
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acidic_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fractaledmind
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-06-13 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: json
|
@@ -163,34 +163,6 @@ dependencies:
|
|
163
163
|
- - ">="
|
164
164
|
- !ruby/object:Gem::Version
|
165
165
|
version: '0'
|
166
|
-
- !ruby/object:Gem::Dependency
|
167
|
-
name: rubocop-minitest
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
169
|
-
requirements:
|
170
|
-
- - ">="
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: '0'
|
173
|
-
type: :development
|
174
|
-
prerelease: false
|
175
|
-
version_requirements: !ruby/object:Gem::Requirement
|
176
|
-
requirements:
|
177
|
-
- - ">="
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: '0'
|
180
|
-
- !ruby/object:Gem::Dependency
|
181
|
-
name: rubocop-rake
|
182
|
-
requirement: !ruby/object:Gem::Requirement
|
183
|
-
requirements:
|
184
|
-
- - ">="
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version: '0'
|
187
|
-
type: :development
|
188
|
-
prerelease: false
|
189
|
-
version_requirements: !ruby/object:Gem::Requirement
|
190
|
-
requirements:
|
191
|
-
- - ">="
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
version: '0'
|
194
166
|
- !ruby/object:Gem::Dependency
|
195
167
|
name: simplecov
|
196
168
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,6 +202,7 @@ files:
|
|
230
202
|
- ".github/FUNDING.yml"
|
231
203
|
- ".github/workflows/main.yml"
|
232
204
|
- ".gitignore"
|
205
|
+
- ".rubocop-https---www-goodcop-style-base-yml"
|
233
206
|
- ".rubocop.yml"
|
234
207
|
- ".ruby-version"
|
235
208
|
- Gemfile
|
@@ -260,6 +233,9 @@ files:
|
|
260
233
|
- lib/acidic_job/engine.rb
|
261
234
|
- lib/acidic_job/errors.rb
|
262
235
|
- lib/acidic_job/log_subscriber.rb
|
236
|
+
- lib/acidic_job/plugin_context.rb
|
237
|
+
- lib/acidic_job/plugins/transactional_step.rb
|
238
|
+
- lib/acidic_job/serializer.rb
|
263
239
|
- lib/acidic_job/serializers/exception_serializer.rb
|
264
240
|
- lib/acidic_job/serializers/job_serializer.rb
|
265
241
|
- lib/acidic_job/serializers/new_record_serializer.rb
|