synchronized_model 0.3.0 → 0.3.1

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
  SHA1:
3
- metadata.gz: 3911727754d2946a62692b62f6eac4cba5db203b
4
- data.tar.gz: 72ccddc961cada06f0bdc72a0221b4a37f165344
3
+ metadata.gz: 925b4dd303420f4380159b84be8cea2a718c161e
4
+ data.tar.gz: ffd8d2efd765cbc8d9edb46a7e26eba4774dafaa
5
5
  SHA512:
6
- metadata.gz: 92d8e60acbccc7fa41b6c52da80cd21ce86ce4c33ca9024f0141a27d0d51a32224a9654756aa0e53f8530d667ec272cfd12f7a99eec6d28055fbd763dbe162a4
7
- data.tar.gz: a2eb50e4213a1baf39b2afc6d367ea21d5a0290cf710e7623eaa05f408505635910a67f910b4d747976fd0dfe1edd328a306420071b1bb23eb8bcc588ef6f3c5
6
+ metadata.gz: 9c62e4ee4610fe98863bbc571f1699b9a24374b463f591c9cb4e673dd2c1f7bf3e5b8afb666dddd21f646c0bc64218374c6922581098ff08bb05dfba02d304ef
7
+ data.tar.gz: 536208c1982cdebcc24a3cbcd5bd064b9dbd7f15da39c15dcec7bc5d8fc7856dfba7227e2fc73654ab944b4a0f3bb542775331f91030609fa6bfa6c53af3bffc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- synchronized_model (0.3.0)
4
+ synchronized_model (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -8,9 +8,18 @@ module SynchronizedModel
8
8
  end
9
9
 
10
10
  def call
11
- model = SynchronizedModel::ModelMessage.new(message).model
12
- model.record_timestamps = false
11
+ if model
12
+ update_model
13
+ else
14
+ log_model_not_found
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def update_model
13
21
  if chronological_update?(model)
22
+ model.record_timestamps = false
14
23
  model.save!
15
24
  else
16
25
  log_message = "Outdated message for #{model.class} " \
@@ -19,10 +28,18 @@ module SynchronizedModel
19
28
  end
20
29
  end
21
30
 
22
- private
23
-
24
31
  def chronological_update?(model)
25
32
  !(model.updated_at_was && model.updated_at_was >= model.updated_at)
26
33
  end
34
+
35
+ def model
36
+ @model ||= SynchronizedModel::ModelMessage.new(message).model
37
+ end
38
+
39
+ def log_model_not_found
40
+ log_message = "Skipped Message ID: #{message[:id]}. " \
41
+ "No #{message[:resource]} model configured with SynchronizedModel"
42
+ SynchronizedModel.logger.info(log_message)
43
+ end
27
44
  end
28
45
  end
@@ -16,25 +16,13 @@ module SynchronizedModel
16
16
  end
17
17
 
18
18
  def model
19
- @model ||= resource_class.from_queue_payload(payload)
19
+ @model ||= resource_class&.from_queue_payload(payload)
20
20
  end
21
21
 
22
22
  protected
23
23
 
24
24
  def resource_class
25
- SynchronizedModel.receive_resource_classes.fetch(
26
- resource.to_sym, NullModel
27
- )
28
- end
29
-
30
- class NullModel
31
- def self.from_queue_payload(_payload); NullModel.new; end
32
-
33
- def self.find_by(_hash); nil; end
34
-
35
- def save!; end
36
-
37
- def updated_at; nil; end
25
+ SynchronizedModel.receive_resource_classes[resource.to_sym]
38
26
  end
39
27
  end
40
28
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SynchronizedModel
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synchronized_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Cranston
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-05 00:00:00.000000000 Z
11
+ date: 2018-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler