acidic_job 0.8.8 → 0.9.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73e730bb2b10e7c54a403fb2dea12c0f0d398d0ae761a01ec38cf59288eb3309
4
- data.tar.gz: 6d1826773e7cdc6b4f42fc291a332859d6d22f45e7eb519e36753788198aaa71
3
+ metadata.gz: 81f0d07fd3ed80da090cad46ec491cc26eb563daf53409929a35c82cb63205fd
4
+ data.tar.gz: 64de5c5c2ae35b4ce1fc50495b1dd647c722a80075f6371aa62dd7ba6996ebdc
5
5
  SHA512:
6
- metadata.gz: c15d6d8b6298df62b4cb241efe8dcf8fd46d6804a0dbe1f38106085bc66cc61fb380237de2cfbc0b3db1eac2942f6727ab1a6cb22c8a79914feef2b5461494d5
7
- data.tar.gz: 9230e95fcff19c465124a90d55514ef56b404faa922ef1e5029f8477b009216bf8adb9a5d1b721db76a99906d9605850192de4c91c234bc04f1c90d02d7c761c
6
+ metadata.gz: 0fd0a5171079377a1c9e9d810af1e95e955defbe5bb1bd929b627f1b5e66bdea3ae7276728de7369076ad09fd3bf24b23427706f971b69bdb68c912fffdbd14d
7
+ data.tar.gz: 12a1ba218ac52d17bdff46307055a04df317c95600f40eb4391e8d40a8f37169ac3360a8c6fa05657d5c3fb5fac3de92aea8f79b6b81f72604690a63ae4d14cd
data/.rubocop.yml CHANGED
@@ -1,3 +1,7 @@
1
+ require:
2
+ - rubocop-minitest
3
+ - rubocop-rake
4
+
1
5
  AllCops:
2
6
  TargetRubyVersion: 2.7
3
7
  NewCops: enable
@@ -39,3 +43,6 @@ Metrics/PerceivedComplexity:
39
43
 
40
44
  Metrics/ClassLength:
41
45
  Enabled: false
46
+
47
+ Minitest/MultipleAssertions:
48
+ Enabled: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- acidic_job (0.8.8)
4
+ acidic_job (0.9.0)
5
5
  activejob
6
6
  activerecord
7
7
  activesupport
@@ -85,7 +85,7 @@ module AcidicJob
85
85
  "jid" => @job_id,
86
86
  "queue" => @queue_name
87
87
  }
88
- item["at"] = @scheduled_at if @scheduled_at
88
+ item["at"] = @scheduled_at if defined?(@scheduled_at) && @scheduled_at
89
89
 
90
90
  ::Sidekiq::Client.push(item)
91
91
  end
@@ -126,16 +126,16 @@ module AcidicJob
126
126
  # https://github.com/rails/rails/blob/93c9534c9871d4adad4bc33b5edc355672b59c61/activejob/lib/active_job/callbacks.rb
127
127
  concerning :Callbacks do
128
128
  class_methods do
129
- def around_perform(*filters, &blk)
130
- set_callback(:perform, :around, *filters, &blk)
129
+ def around_perform(...)
130
+ set_callback(:perform, :around, ...)
131
131
  end
132
132
 
133
- def before_perform(*filters, &blk)
134
- set_callback(:perform, :before, *filters, &blk)
133
+ def before_perform(...)
134
+ set_callback(:perform, :before, ...)
135
135
  end
136
136
 
137
- def after_perform(*filters, &blk)
138
- set_callback(:perform, :after, *filters, &blk)
137
+ def after_perform(...)
138
+ set_callback(:perform, :after, ...)
139
139
  end
140
140
  end
141
141
  end
@@ -15,7 +15,7 @@ module AcidicJob
15
15
  STAGED_JOB_ID_PREFIX = "STG"
16
16
  STAGED_JOB_ID_DELIMITER = "__"
17
17
  IDEMPOTENCY_KEY_LOCK_TIMEOUT_SECONDS = 2
18
- RAILS_VERSION = Gem::Version.new(Rails.version)
18
+ RAILS_VERSION = Gem::Version.new(ActiveRecord.version)
19
19
  TARGET_VERSION = Gem::Version.new("7.1")
20
20
  REQUIRES_CODER_FOR_SERIALIZE = RAILS_VERSION >= TARGET_VERSION ||
21
21
  RAILS_VERSION.segments[..1] == TARGET_VERSION.segments
@@ -6,31 +6,36 @@ module AcidicJob
6
6
  module Serializers
7
7
  class ExceptionSerializer < ::ActiveJob::Serializers::ObjectSerializer
8
8
  def serialize(exception)
9
- hash = {
10
- "class" => exception.class.name,
11
- "message" => exception.message,
12
- "cause" => exception.cause,
13
- "backtrace" => {}
14
- }
15
-
16
- exception&.backtrace&.map do |trace|
9
+ compressed_backtrace = {}
10
+ exception.backtrace&.map do |trace|
17
11
  path, _, location = trace.rpartition("/")
12
+ next if compressed_backtrace.key?(path)
18
13
 
19
- next if hash["backtrace"].key?(path)
20
-
21
- hash["backtrace"][path] = location
14
+ compressed_backtrace[path] = location
22
15
  end
16
+ exception.set_backtrace(compressed_backtrace.map do |path, location|
17
+ [path, location].join("/")
18
+ end)
19
+ exception.cause&.set_backtrace([])
23
20
 
24
- super(hash)
21
+ super({ "yaml" => exception.to_yaml })
25
22
  end
26
23
 
27
24
  def deserialize(hash)
28
- exception_class = hash["class"].constantize
29
- exception = exception_class.new(hash["message"])
30
- exception.set_backtrace(hash["backtrace"].map do |path, location|
31
- [path, location].join("/")
32
- end)
33
- exception
25
+ if hash.key?("class")
26
+ exception_class = hash["class"].constantize
27
+ exception = exception_class.new(hash["message"])
28
+ exception.set_backtrace(hash["backtrace"].map do |path, location|
29
+ [path, location].join("/")
30
+ end)
31
+ exception
32
+ elsif hash.key?("yaml")
33
+ if YAML.respond_to?(:unsafe_load)
34
+ YAML.unsafe_load(hash["yaml"])
35
+ else
36
+ YAML.load(hash["yaml"]) # rubocop:disable Security/YAMLLoad
37
+ end
38
+ end
34
39
  end
35
40
 
36
41
  def serialize?(argument)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AcidicJob
4
- VERSION = "0.8.8"
4
+ VERSION = "0.9.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acidic_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - fractaledmind
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-26 00:00:00.000000000 Z
11
+ date: 2023-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob