acidic_job 0.8.7 → 0.8.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 153e6365b6a1f1fd5aafca127047a04571c0c9a45f3320c4e17c347b7cbe84b8
4
- data.tar.gz: 94238767a6f1d7066650ac117cdc7eff2cc2aac88f643b697391c411477dc1e1
3
+ metadata.gz: 73e730bb2b10e7c54a403fb2dea12c0f0d398d0ae761a01ec38cf59288eb3309
4
+ data.tar.gz: 6d1826773e7cdc6b4f42fc291a332859d6d22f45e7eb519e36753788198aaa71
5
5
  SHA512:
6
- metadata.gz: d55ffb8c2888bb83188042a74bf95b90d70dd4c541e92308f7f1e7008f13a63261e635fe280ea1f191fd4f6645e4ed99cfe26c3e63ac3d7b61b60fb1fde9ac0c
7
- data.tar.gz: d773d20887dcf3894bb005a827c8a2ccb80bb1392a34290ddf6cc4e8afaf703b331c56b1246d9059c58900cdc12a23e678b2ef1cc89537878b914a932b9f495c
6
+ metadata.gz: c15d6d8b6298df62b4cb241efe8dcf8fd46d6804a0dbe1f38106085bc66cc61fb380237de2cfbc0b3db1eac2942f6727ab1a6cb22c8a79914feef2b5461494d5
7
+ data.tar.gz: 9230e95fcff19c465124a90d55514ef56b404faa922ef1e5029f8477b009216bf8adb9a5d1b721db76a99906d9605850192de4c91c234bc04f1c90d02d7c761c
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 3.1.4
1
+ ruby 3.1.1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- acidic_job (0.8.7)
4
+ acidic_job (0.8.8)
5
5
  activejob
6
6
  activerecord
7
7
  activesupport
@@ -18,5 +18,13 @@ module AcidicJob
18
18
  rescue ActiveRecord::RecordNotFound
19
19
  nil
20
20
  end
21
+
22
+ # In order to allow our `NewRecordSerializer` a chance to work, we need to ensure that
23
+ # ActiveJob's first attempt to serialize an ActiveRecord model doesn't throw an exception.
24
+ def convert_to_global_id_hash(argument)
25
+ { GLOBALID_KEY => argument.to_global_id.to_s }
26
+ rescue URI::GID::MissingModelIdError
27
+ Serializers.serialize(argument)
28
+ end
21
29
  end
22
30
  end
@@ -16,6 +16,7 @@ module AcidicJob
16
16
  ::ActiveSupport.on_load(:active_job) do
17
17
  ::ActiveJob::Serializers.add_serializers(
18
18
  Serializers::ExceptionSerializer,
19
+ Serializers::NewRecordSerializer,
19
20
  Serializers::FinishedPointSerializer,
20
21
  Serializers::JobSerializer,
21
22
  Serializers::RangeSerializer,
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_job/serializers/object_serializer"
4
+
5
+ module AcidicJob
6
+ module Serializers
7
+ class NewRecordSerializer < ::ActiveJob::Serializers::ObjectSerializer
8
+ def serialize(new_record)
9
+ super(
10
+ "class" => new_record.class.name,
11
+ "attributes" => new_record.attributes
12
+ )
13
+ end
14
+
15
+ def deserialize(hash)
16
+ new_record_class = hash["class"].constantize
17
+ new_record_class.new(hash["attributes"])
18
+ end
19
+
20
+ def serialize?(argument)
21
+ defined?(::ActiveRecord) && argument.respond_to?(:new_record?) && argument.new_record?
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "./testing"
3
+ require_relative "testing"
4
4
 
5
5
  module AcidicJob
6
6
  class TestCase < ::ActiveJob::TestCase
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AcidicJob
4
- VERSION = "0.8.7"
4
+ VERSION = "0.8.8"
5
5
  end
data/lib/acidic_job.rb CHANGED
@@ -30,6 +30,7 @@ require_relative "acidic_job/serializers/range_serializer"
30
30
  require_relative "acidic_job/serializers/recovery_point_serializer"
31
31
  require_relative "acidic_job/serializers/worker_serializer"
32
32
  require_relative "acidic_job/serializers/active_kiq_serializer"
33
+ require_relative "acidic_job/serializers/new_record_serializer"
33
34
 
34
35
  require_relative "acidic_job/railtie"
35
36
 
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.7
4
+ version: 0.8.8
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-07 00:00:00.000000000 Z
11
+ date: 2023-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -275,6 +275,7 @@ files:
275
275
  - lib/acidic_job/serializers/exception_serializer.rb
276
276
  - lib/acidic_job/serializers/finished_point_serializer.rb
277
277
  - lib/acidic_job/serializers/job_serializer.rb
278
+ - lib/acidic_job/serializers/new_record_serializer.rb
278
279
  - lib/acidic_job/serializers/range_serializer.rb
279
280
  - lib/acidic_job/serializers/recovery_point_serializer.rb
280
281
  - lib/acidic_job/serializers/worker_serializer.rb
@@ -311,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
311
312
  - !ruby/object:Gem::Version
312
313
  version: '0'
313
314
  requirements: []
314
- rubygems_version: 3.3.26
315
+ rubygems_version: 3.3.7
315
316
  signing_key:
316
317
  specification_version: 4
317
318
  summary: Idempotent operations for Rails apps, built on top of ActiveJob.