beaconable 0.2.0 → 0.3.2

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: 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