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.
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 = "FINISHED"
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 "create_acidic_job_tables_migration.rb.erb",
16
- "db/migrate/create_acidic_job_tables.rb",
17
- migration_version: migration_version
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, default: "{}"
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.json :definition, null: true, default: "{}"
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 :step, null: false
16
- t.string :action, null: false
17
- t.datetime :timestamp, null: false
18
- t.json :data
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 :key, null: false
27
- t.json :value, null: false, default: "{}"
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.rc2
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-05-14 00:00:00.000000000 Z
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