beaconable 0.2.1 → 0.3.3

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: 0b1abbdf6fdbcdd480d36836532f46b434fad5c09b4d7557e031a6ad91e9684e
4
- data.tar.gz: b35537d1303068aff72dc2734c794cceff00cc6c413e3a2bc7ce5f41f9c6ab9b
3
+ metadata.gz: 91d63120af45f37b54ab3020114dd38b0d4e0b713905502a8f00c0897d998a70
4
+ data.tar.gz: 83665ce72cf9935939f831fac3b71c1182185dea3afe03087ff56e5b083a3c61
5
5
  SHA512:
6
- metadata.gz: bb023b70129f14fc33d7038c24e1fceb6f1b4f08380aedb68dd23599d3acf790c2b7f7c81ae2d0ce66196f3688f1a4247d4017961f79fcef25482c55bba183c8
7
- data.tar.gz: 34204048341b5d220fbb4e9da12961d57ef578e07dcf676f7d9067052c8d8444305e6e5ac0e6f5ff1fe1215fb262f3a44dcf3d646b20a44faa5a549689f11093
6
+ metadata.gz: 1c4e95173a8da6acb6ee8f7b9776ade78a074b3578c8127b6b97da6433110a191ad6fab8df609ee851005d3893d35cd305adf6d14068163a33d1b431b6947f99
7
+ data.tar.gz: 329e7e0710ec294b3f243116ea61b2afe9d823f853669eb7b24492e81a21e751afe98ea801f68b34e9fc2dab0186e0eb5c467bfbb08c03d40c923b5795af05f5
@@ -0,0 +1,33 @@
1
+ ## 0.3.3 (2020-11-02)
2
+
3
+ - Fixes a bug that causes an error when a beaconable was touch by an association without changes
4
+
5
+ ### Improvements
6
+ - Add `#skip_beacon` method to included clases
7
+
8
+ ## 0.3.2 (2020-10-07)
9
+
10
+ ### Improvements
11
+ - Add `#destroyed_entry?` method
12
+
13
+ ## 0.3.1 (2020-09-16)
14
+
15
+ - Fixes #fire_beacon not to use dirty attributes to check changes
16
+
17
+ ## 0.3.0 (2020-08-03)
18
+
19
+ - Changed ObjectWas initialization to wrap al all the changes for a transaction
20
+
21
+ ## 0.2.2 (2019-12-16)
22
+
23
+ - Added new tests for chained methods
24
+ - Fixed chained methods
25
+
26
+ ## 0.2.1 (2019-12-16)
27
+
28
+ - Made #field_change, #from and #to public
29
+
30
+ ## 0.2.0 (2019-12-12)
31
+
32
+ - Added new test and fixes styles
33
+ - 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.3)
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.3.1)
11
+ activesupport (= 6.0.3.1)
12
+ activerecord (6.0.3.1)
13
+ activemodel (= 6.0.3.1)
14
+ activesupport (= 6.0.3.1)
15
+ activesupport (6.0.3.1)
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, >= 2.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)
@@ -36,7 +36,7 @@ GEM
36
36
  parser (2.6.3.0)
37
37
  ast (~> 2.4.0)
38
38
  rainbow (3.0.0)
39
- rake (10.5.0)
39
+ rake (13.0.1)
40
40
  rubocop (0.74.0)
41
41
  jaro_winkler (~> 1.5.1)
42
42
  parallel (~> 1.10)
@@ -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.3.0)
54
54
 
55
55
  PLATFORMS
56
56
  ruby
@@ -61,7 +61,7 @@ DEPENDENCIES
61
61
  byebug (~> 10.0)
62
62
  minitest (~> 5.0)
63
63
  minitest-reporters (~> 1.3)
64
- rake (~> 10.0)
64
+ rake (~> 13.0)
65
65
  rubocop (~> 0.74.0)
66
66
  sqlite3 (~> 1.3)
67
67
 
data/README.md CHANGED
@@ -28,6 +28,7 @@ When you include Beaconable in your model it will fire your Beacon everytime aft
28
28
  - field_changed?(:field_name) : It allows you to check if a specific field was modified.
29
29
  - any_field_changed?(:field_name, :other_field_name) : It allows you to check if any of multiple fields was modified.
30
30
  - new_entry? : Returns true if the item saved is new
31
+ - destroyed_entry? : Returns true if the item has been destroyed
31
32
 
32
33
  You can also used the following chained methods
33
34
  - field_change(:field_name).from('first_alternative', 'n_alternative').to('first_alternative_for_to', 'second_alternative_for_to', 'n_alternative_for_toq')
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency 'bundler', '~> 1.16'
36
36
  spec.add_development_dependency 'minitest', '~> 5.0'
37
37
  spec.add_development_dependency 'minitest-reporters', '~> 1.3'
38
- spec.add_development_dependency 'rake', '~> 10.0'
38
+ spec.add_development_dependency 'rake', '~> 13.0'
39
39
  spec.add_development_dependency 'rubocop', '~> 0.74.0'
40
40
  spec.add_development_dependency 'sqlite3', '~> 1.3'
41
41
  spec.add_development_dependency 'byebug', '~> 10.0'
@@ -8,19 +8,22 @@ require 'active_record'
8
8
  module Beaconable
9
9
  extend ActiveSupport::Concern
10
10
  included do
11
- before_save :save_for_beacon
12
- after_commit :fire_beacon
11
+ attr_accessor :skip_beacon
12
+
13
+ before_save :save_for_beacon, unless: :skip_beacon
14
+ before_destroy :save_for_beacon, unless: :skip_beacon
15
+ after_touch :save_for_beacon, unless: :skip_beacon
16
+ after_commit :fire_beacon, unless: :skip_beacon
13
17
  end
14
18
 
15
19
  private
16
20
 
17
21
  def save_for_beacon
18
- @object_was = ObjectWas.new(self).call
22
+ @object_was ||= ObjectWas.new(self).call
19
23
  end
20
24
 
21
25
  def fire_beacon
22
- if self.saved_changes?
23
- "#{self.class.name}Beacon".constantize.new(self, @object_was).call
24
- end
26
+ "#{self.class.name}Beacon".constantize.new(self, @object_was).call
27
+ @object_was = nil
25
28
  end
26
29
  end
@@ -23,11 +23,15 @@ module Beaconable
23
23
  end
24
24
 
25
25
  def to(*values)
26
- @result || values.include?(object.send(@field))
26
+ @result && values.include?(object.send(@field))
27
27
  end
28
28
 
29
29
  private
30
30
 
31
+ def destroyed_entry?
32
+ object.destroyed?
33
+ end
34
+
31
35
  def field_changed?(field)
32
36
  object.send(field) != object_was.send(field)
33
37
  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.1"
2
+ VERSION = "0.3.3"
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.1
4
+ version: 0.3.3
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-16 00:00:00.000000000 Z
11
+ date: 2020-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '13.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '13.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -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