beaconable 0.2.0 → 0.3.2

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: 336e4ae5705c0b9ee21fc361ceaf332053bbe93ca56a81718c9f532d29f0e7e6
4
- data.tar.gz: cf182b37f1b77fac9a4fea24572e511f10e34c8ba4e56d8e5bde050e435f569c
3
+ metadata.gz: 153c865ccc03de1488477d0eb93ee548ee5c6f3b1a5c44b36dbea50a7db09b7b
4
+ data.tar.gz: 3429dff8a84e5dc1a9ef0b51cbed602f6ccf403212906692604a95f0b1c65f1b
5
5
  SHA512:
6
- metadata.gz: c9e165fe20b54a5d12a45f7cee82288d54dac268dc887fac802369c2a2ac685112cbda57135929e3774a8bc9bac411e485aaa68e8717cea1bf8ed4bd152de377
7
- data.tar.gz: 496e617282226952d40b960ea599cb1842d89600851c6be77573801d0525fdc7b1b108504346d6fc375dfb6263f12b7b585070d2fcb1baf37d3f520793596f07
6
+ metadata.gz: 30986bb6055ac00ac06cf5a2776ab8268dc02c6a87da08f4e917defeda2e279f1722801f05943ea7855668ce48ebab9cb0e1279224337c535aa422fd05f77dde
7
+ data.tar.gz: 64a9e668e82c15aebd3897c10989614db6e558b11ad4fa06f3f0ff8f687b8ebb35e9dd868ee02c09c39263a0e749c3670ab6f14bad2dae546ecdfacc4b8e9868
@@ -0,0 +1,21 @@
1
+ ## 0.3.1 (2020-09-16)
2
+
3
+ - Fixes #fire_beacon not to use dirty attributes to check changes
4
+
5
+ ## 0.3.0 (2020-08-03)
6
+
7
+ - Changed ObjectWas initialization to wrap al all the changes for a transaction
8
+
9
+ ## 0.2.2 (2019-12-16)
10
+
11
+ - Added new tests for chained methods
12
+ - Fixed chained methods
13
+
14
+ ## 0.2.1 (2019-12-16)
15
+
16
+ - Made #field_change, #from and #to public
17
+
18
+ ## 0.2.0 (2019-12-12)
19
+
20
+ - Added new test and fixes styles
21
+ - Added #field_change, #from, #to
@@ -1,29 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- beaconable (0.2.0)
4
+ beaconable (0.3.2)
5
5
  activerecord (>= 4.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (6.0.0)
11
- activesupport (= 6.0.0)
12
- activerecord (6.0.0)
13
- activemodel (= 6.0.0)
14
- activesupport (= 6.0.0)
15
- activesupport (6.0.0)
10
+ activemodel (6.0.2)
11
+ activesupport (= 6.0.2)
12
+ activerecord (6.0.2)
13
+ activemodel (= 6.0.2)
14
+ activesupport (= 6.0.2)
15
+ activesupport (6.0.2)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
17
  i18n (>= 0.7, < 2)
18
18
  minitest (~> 5.1)
19
19
  tzinfo (~> 1.1)
20
- zeitwerk (~> 2.1, >= 2.1.8)
20
+ zeitwerk (~> 2.2)
21
21
  ansi (1.5.0)
22
22
  ast (2.4.0)
23
23
  builder (3.2.3)
24
24
  byebug (10.0.2)
25
- concurrent-ruby (1.1.5)
26
- i18n (1.6.0)
25
+ concurrent-ruby (1.1.6)
26
+ i18n (1.8.2)
27
27
  concurrent-ruby (~> 1.0)
28
28
  jaro_winkler (1.5.3)
29
29
  minitest (5.11.3)
@@ -47,10 +47,10 @@ GEM
47
47
  ruby-progressbar (1.10.1)
48
48
  sqlite3 (1.4.1)
49
49
  thread_safe (0.3.6)
50
- tzinfo (1.2.5)
50
+ tzinfo (1.2.7)
51
51
  thread_safe (~> 0.1)
52
52
  unicode-display_width (1.6.0)
53
- zeitwerk (2.1.9)
53
+ zeitwerk (2.2.2)
54
54
 
55
55
  PLATFORMS
56
56
  ruby
@@ -9,18 +9,18 @@ module Beaconable
9
9
  extend ActiveSupport::Concern
10
10
  included do
11
11
  before_save :save_for_beacon
12
+ before_destroy :save_for_beacon
12
13
  after_commit :fire_beacon
13
14
  end
14
15
 
15
16
  private
16
17
 
17
18
  def save_for_beacon
18
- @object_was = ObjectWas.new(self).call
19
+ @object_was ||= ObjectWas.new(self).call
19
20
  end
20
21
 
21
22
  def fire_beacon
22
- if self.saved_changes?
23
- "#{self.class.name}Beacon".constantize.new(self, @object_was).call
24
- end
23
+ "#{self.class.name}Beacon".constantize.new(self, @object_was).call
24
+ @object_was = nil
25
25
  end
26
26
  end
@@ -9,8 +9,29 @@ module Beaconable
9
9
  @object_was = object_was
10
10
  end
11
11
 
12
+ def field_changed(field)
13
+ @field = field
14
+ @result = field_changed? field
15
+ self
16
+ end
17
+
18
+ def from(*values)
19
+ return self unless @result
20
+
21
+ @result = values.include? object_was.send(@field)
22
+ self
23
+ end
24
+
25
+ def to(*values)
26
+ @result && values.include?(object.send(@field))
27
+ end
28
+
12
29
  private
13
30
 
31
+ def destroyed_entry?
32
+ object.destroyed?
33
+ end
34
+
14
35
  def field_changed?(field)
15
36
  object.send(field) != object_was.send(field)
16
37
  end
@@ -26,23 +47,5 @@ module Beaconable
26
47
  object_was.created_at.nil?
27
48
  end
28
49
 
29
- def field_changed(field)
30
- @field = field
31
- @result = field_changed? field
32
- self
33
- end
34
-
35
- def from(*values)
36
- return self if @result == false
37
-
38
- @result = values.include? object_was.send(@field)
39
- self
40
- end
41
-
42
- def to(*values)
43
- return false if @result == false
44
-
45
- values.include? object.send(@field)
46
- end
47
50
  end
48
51
  end
@@ -10,7 +10,7 @@ module Beaconable
10
10
 
11
11
  def call
12
12
  hashed_object = {}
13
- symbolized_column_names = object.class.column_names.map {|column_name| column_name.to_sym}
13
+ symbolized_column_names = object.class.column_names.map(&:to_sym)
14
14
  symbolized_column_names.each do |column_name|
15
15
  hashed_object[column_name] = object.send("#{column_name}_was")
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module Beaconable
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaconable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerardo Raiden
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-12 00:00:00.000000000 Z
11
+ date: 2020-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -132,6 +132,7 @@ extra_rdoc_files: []
132
132
  files:
133
133
  - ".gitignore"
134
134
  - ".travis.yml"
135
+ - CHANGELOG.md
135
136
  - CODE_OF_CONDUCT.md
136
137
  - Gemfile
137
138
  - Gemfile.lock