kushojin 0.1.2 → 0.1.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 +4 -4
- data/.travis.yml +2 -2
- data/README.md +2 -2
- data/bin/console +4 -4
- data/lib/kushojin/model_methods/callback.rb +3 -3
- data/lib/kushojin/model_methods/change.rb +23 -4
- data/lib/kushojin/model_methods/record_changes_callbacks.rb +15 -3
- data/lib/kushojin/recorder.rb +2 -2
- data/lib/kushojin/sender/each_sender.rb +0 -11
- data/lib/kushojin/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aded25303e7f5437b7c4ff30cf00786404573a9b348e41ec717ed3fe2ba91a12
|
4
|
+
data.tar.gz: 7a2475384378eebc452d62d2ad969c8d5c792599aa59265b47dc9ad9d08b388b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1c3a9cb1b8ae4cd2e07b0e2da45583b1a2f38f18d9a96bddaa1c7d74ee9dd9483059b0ca007754cdaac349fcae758f13840f0d391f26233dc59742cc9317faf
|
7
|
+
data.tar.gz: 7b00fca7decfed5b27caf9e357c8cbf0813a13d1d80ea8e399dad7c12d841485cc8f4f09e2776b809242bead4dbb58338b17dd1567d85bad56887b917dd0c4fb
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -57,10 +57,10 @@ Custom callback object can be used with `:callbacks` option.
|
|
57
57
|
|
58
58
|
```ruby
|
59
59
|
class CustomCallbacks
|
60
|
-
# Must respond to after_create, after_update, and
|
60
|
+
# Must respond to after_create, after_update, and after_destroy.
|
61
61
|
def after_create(record); end
|
62
62
|
def after_update(record); end
|
63
|
-
def
|
63
|
+
def after_destroy(record); end
|
64
64
|
end
|
65
65
|
|
66
66
|
class User < ApplicationRecord
|
data/bin/console
CHANGED
@@ -7,8 +7,8 @@ require "kushojin"
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
|
11
|
-
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
12
12
|
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
13
|
+
# require "irb"
|
14
|
+
# IRB.start(__FILE__)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Kushojin
|
2
2
|
module ModelMethods
|
3
3
|
module Callback
|
4
|
-
RECORD_EVENTS = %i[
|
4
|
+
RECORD_EVENTS = %i[after_create after_update after_destroy].freeze
|
5
5
|
|
6
6
|
module ClassMethods
|
7
7
|
def self.extended(klass)
|
@@ -22,10 +22,10 @@ module Kushojin
|
|
22
22
|
# Custom callback object can be used with +:callbacks+ option.
|
23
23
|
#
|
24
24
|
# class CustomCallbacks
|
25
|
-
# # Must respond to after_create, after_update, and
|
25
|
+
# # Must respond to after_create, after_update, and after_destroy.
|
26
26
|
# def after_create(record); end
|
27
27
|
# def after_update(record); end
|
28
|
-
# def
|
28
|
+
# def after_destroy(record); end
|
29
29
|
# end
|
30
30
|
#
|
31
31
|
# class User < ApplicationRecord
|
@@ -1,18 +1,37 @@
|
|
1
1
|
module Kushojin
|
2
2
|
module ModelMethods
|
3
3
|
class Change
|
4
|
-
attr_reader :event, :model
|
4
|
+
attr_reader :event, :model
|
5
5
|
|
6
6
|
delegate :primary_key, :table_name, to: "@model.class"
|
7
7
|
|
8
8
|
def initialize(event, model)
|
9
9
|
@event = event
|
10
|
-
@model =
|
11
|
-
|
10
|
+
@model = take_copy_of(model).freeze
|
11
|
+
end
|
12
|
+
|
13
|
+
def changes
|
14
|
+
@model.saved_changes
|
12
15
|
end
|
13
16
|
|
14
17
|
def changes_without_primary_key
|
15
|
-
|
18
|
+
changes.reject { |attr_name, _| attr_name == primary_key }
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
class_attribute :copy_ivars, instance_writer: false
|
24
|
+
self.copy_ivars = %i[
|
25
|
+
@attributes
|
26
|
+
@mutations_before_last_save
|
27
|
+
]
|
28
|
+
|
29
|
+
def take_copy_of(model)
|
30
|
+
model.class.new do |copy|
|
31
|
+
copy_ivars.each do |ivar|
|
32
|
+
copy.instance_variable_set(ivar, model.instance_variable_get(ivar).deep_dup)
|
33
|
+
end
|
34
|
+
end
|
16
35
|
end
|
17
36
|
end
|
18
37
|
end
|
@@ -2,10 +2,22 @@ module Kushojin
|
|
2
2
|
module ModelMethods
|
3
3
|
class RecordChangesCallbacks
|
4
4
|
Callback::RECORD_EVENTS.each do |event|
|
5
|
+
callback = event.to_s.split(/_/).last
|
6
|
+
|
5
7
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
def #{event}(model) # def after_create(model)
|
9
|
+
return unless Recorder.current # return unless Recorder.current
|
10
|
+
#
|
11
|
+
change = build_change_on_#{callback}(model) # change = build_change_on_create(model)
|
12
|
+
Recorder.record(change) # Recorder.record(change)
|
13
|
+
end # end
|
14
|
+
RUBY
|
15
|
+
|
16
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
17
|
+
def build_change_on_#{callback}(model) # def build_change_on_create(model)
|
18
|
+
ModelMethods::Change.new(:#{callback}, model) # ModelMethods::Change.new(:create, model)
|
19
|
+
end # end
|
20
|
+
private :build_change_on_#{callback} # private :build_change_on_create
|
9
21
|
RUBY
|
10
22
|
end
|
11
23
|
end
|
data/lib/kushojin/recorder.rb
CHANGED
@@ -17,17 +17,6 @@ module Kushojin
|
|
17
17
|
def tag(controller)
|
18
18
|
"#{controller.controller_name}.#{controller.action_name}"
|
19
19
|
end
|
20
|
-
|
21
|
-
def map(change, controller:)
|
22
|
-
changes = change.changes_without_primary_key.reject { |attr_name, _| ignore_columns.include?(attr_name) }
|
23
|
-
{
|
24
|
-
"event" => change.event.to_s,
|
25
|
-
"request_id" => controller.request.request_id,
|
26
|
-
"table_name" => change.table_name,
|
27
|
-
change.primary_key => change.model.id,
|
28
|
-
"changes" => changes,
|
29
|
-
}
|
30
|
-
end
|
31
20
|
end
|
32
21
|
end
|
33
22
|
end
|
data/lib/kushojin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kushojin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loose coupling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|