active_touch 4.2.1 → 5.0.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
  SHA1:
3
- metadata.gz: 78a4f581bd51a94ad33d816a9f8f097079bfdfc8
4
- data.tar.gz: adfd8c1ba14c119df3d56036589e13002f44f2e4
3
+ metadata.gz: f6b70d780678e122e010326d0a35f40b196331d8
4
+ data.tar.gz: f2e40371296d3839fc36503a640fdb4b7b27c969
5
5
  SHA512:
6
- metadata.gz: 393821f429b34722bfcfdc12d95a11daf4139a9a04a2cd9550ce15acf2ae293fd7acf5f3ea270e629a4eb815ac7dea5ae691220e48eee2c17bf45d10d0df20f7
7
- data.tar.gz: a8be6d9b2dd44bfb195838235ab6345fff070d0d12414aeba494d2af34404f33ed99c97eb0579e39093b1d0a7fdc342ebec92f0fa35c0f1cc47f8bb46bb16e9f
6
+ metadata.gz: f5d6eb1d3eecf20ecd2d2a6ae03f2b5c44aeac06aaf304806e27df3ae6f1b438af0ecf2fb05eba58ff6a9fb9ba696f601e68245752d5b72bc43918cec1ba3c9e
7
+ data.tar.gz: 25526ebd8776633a2186069688da1e4aa79401c43bc0bce65d4a834d22af3b4cb7972c4792fff6525831e83a7a755a89ae03632bd2a4cfc40920a22d81b64f21
@@ -1,13 +1,12 @@
1
- require 'active_touch/version'
1
+ require 'active_support/concern'
2
+ require 'active_job/base'
3
+ require 'active_record/base'
4
+
2
5
  require 'active_touch/configuration'
3
6
  require 'active_touch/define_touch'
4
7
  require 'active_touch/network'
5
- require 'active_touch/touch'
6
8
  require 'active_touch/touch_job'
7
-
8
- require 'active_support/concern'
9
- require 'active_job/base'
10
- require 'active_record/base'
9
+ require 'active_touch/version'
11
10
 
12
11
  module ActiveTouch
13
12
  extend ActiveSupport::Concern
@@ -41,10 +41,9 @@ module ActiveTouch
41
41
  changed_attributes = self.previous_changes.keys.map(&:to_sym)
42
42
  watched_changes = (options[:watch] & changed_attributes)
43
43
 
44
- # watched values changed and conditional procs evaluate to true
45
44
  if watched_changes.any? && options[:if].call(self) && !options[:unless].call(self)
46
- Rails.logger.debug "Touch Before Commit: #{self.class}(#{self.id}) => #{association} due to changes in #{watched_changes}"
47
45
  TouchJob.perform_now(self, association.to_s, touch_updates: options[:touch_updates])
46
+ Rails.logger.debug "Touch Before Commit: #{self.class}(#{self.id}) => #{association} due to changes in #{watched_changes}"
48
47
  end
49
48
  end
50
49
  end
@@ -57,27 +56,19 @@ module ActiveTouch
57
56
  changed_attributes = self.previous_changes.keys.map(&:to_sym)
58
57
  watched_changes = (options[:watch] & changed_attributes)
59
58
 
60
- # watched values changed and conditional procs evaluate to true
61
59
  if watched_changes.any? && options[:if].call(self) && !options[:unless].call(self)
62
60
  Rails.logger.debug "Touch After Commit: #{self.class}(#{self.id}) => #{association} due to changes in #{watched_changes}"
61
+ options = {
62
+ after_touch: options[:after_touch].to_s,
63
+ is_destroy: false,
64
+ is_touched: options[:touch_in_transaction],
65
+ touch_updates: options[:touch_updates]
66
+ }
63
67
 
64
68
  if options[:async]
65
- TouchJob
66
- .set(queue: ActiveTouch.configuration.queue)
67
- .perform_later(self, association.to_s, {
68
- after_touch: options[:after_touch].to_s,
69
- is_destroy: false,
70
- is_touched: options[:touch_in_transaction],
71
- touch_updates: options[:touch_updates]
72
- })
73
-
69
+ TouchJob.set(queue: ActiveTouch.configuration.queue).perform_later(self, association.to_s, options)
74
70
  else
75
- TouchJob.perform_now(self, association.to_s, {
76
- after_touch: options[:after_touch].to_s,
77
- is_destroy: false,
78
- is_touched: options[:touch_in_transaction],
79
- touch_updates: options[:touch_updates]
80
- })
71
+ TouchJob.perform_now(self, association.to_s, options)
81
72
  end
82
73
 
83
74
  end
@@ -1,9 +1,42 @@
1
1
  module ActiveTouch
2
2
  class TouchJob < ActiveJob::Base
3
3
 
4
+ attr_accessor :record, :association, :after_touch, :is_destroy, :is_touched, :touch_updates
5
+
4
6
  def perform(record, association, options = {})
5
- Touch.new(record, association, options).run
7
+ @record = record
8
+ @association = association
9
+ @after_touch = options[:after_touch]
10
+ @is_destroy = options[:is_destroy]
11
+ @is_touched = options[:is_touched]
12
+ @touch_updates = (options[:touch_updates] || {})
13
+
14
+ run
6
15
  end
7
16
 
17
+ def run
18
+ if !ActiveTouch.configuration.timestamp_attribute.nil?
19
+ touch_updates[ActiveTouch.configuration.timestamp_attribute] = record.updated_at
20
+ end
21
+
22
+ if associated.is_a? ActiveRecord::Base
23
+ associated.update_columns(touch_updates) if !touch_updates.empty? && !is_touched
24
+ associated.send(after_touch) unless after_touch.blank?
25
+
26
+ elsif !associated.nil?
27
+ associated.update_all(touch_updates) if !touch_updates.empty? && !is_touched
28
+ associated.each { |associate| associate.send(after_touch) } unless after_touch.blank?
29
+ end
30
+ end
31
+
32
+ def associated
33
+ @associated ||= begin
34
+ if association == 'self'
35
+ is_destroy || record.destroyed? ? nil : record
36
+ else
37
+ record.send(association)
38
+ end
39
+ end
40
+ end
8
41
  end
9
42
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveTouch
2
- VERSION = '4.2.1'
2
+ VERSION = '5.0.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_touch
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Pheasey
@@ -80,7 +80,6 @@ files:
80
80
  - lib/active_touch/configuration.rb
81
81
  - lib/active_touch/define_touch.rb
82
82
  - lib/active_touch/network.rb
83
- - lib/active_touch/touch.rb
84
83
  - lib/active_touch/touch_job.rb
85
84
  - lib/active_touch/version.rb
86
85
  - lib/generators/active_touch/initializer_generator.rb
@@ -1,39 +0,0 @@
1
- module ActiveTouch
2
- class Touch
3
-
4
- attr_accessor :record, :association, :after_touch, :is_destroy, :is_touched, :touch_updates
5
-
6
- def initialize(record, association, options = {})
7
- @record = record
8
- @association = association
9
- @after_touch = options[:after_touch]
10
- @is_destroy = options[:is_destroy]
11
- @is_touched = options[:is_touched]
12
- @touch_updates = (options[:touch_updates] || {})
13
- end
14
-
15
- def run
16
- touch_updates[ActiveTouch.configuration.timestamp_attribute] = record.updated_at
17
-
18
- if associated.is_a? ActiveRecord::Base
19
- associated.update_columns(touch_updates) if !ActiveTouch.configuration.timestamp_attribute.nil? && !is_touched
20
- associated.send(after_touch) unless after_touch.blank?
21
-
22
- elsif !associated.nil?
23
- associated.update_all(touch_updates) if !ActiveTouch.configuration.timestamp_attribute.nil? && !is_touched
24
- associated.each { |associate| associate.send(after_touch) } unless after_touch.blank?
25
- end
26
- end
27
-
28
- def associated
29
- @associated ||= begin
30
- if association == 'self'
31
- is_destroy || record.destroyed? ? nil : record
32
- else
33
- record.send(association)
34
- end
35
- end
36
- end
37
-
38
- end
39
- end