snapcher 0.2.0 → 0.3.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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +12 -0
- data/lib/snapcher/junker.rb +9 -4
- data/lib/snapcher/version.rb +1 -1
- data/lib/snapcher.rb +1 -0
- data/sample-app/Gemfile.lock +1 -1
- data/sample-app/app/models/gift.rb +3 -0
- data/sample-app/app/models/user.rb +1 -1
- data/sample-app/db/migrate/20240625084542_create_gifts.rb +11 -0
- data/sample-app/db/schema.rb +19 -1
- metadata +4 -3
- data/logo/snapcher_logo.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e451f8410d9ef2ca33254b255bdde727d2f9a3872f585adc858f60db6aa790d3
|
4
|
+
data.tar.gz: e65e54268eec21fd4319d70db673f92c79bda6236a034fc47d78dadbeb8ce3a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7467703fdd41b839c084d3cb3f0bdcb391c0bdb71bb998624bb15851a63182d25b606345466451854a55473c38b0cd6d9653fd457d027d3152a1b344962de25b
|
7
|
+
data.tar.gz: 0e94835a649439317cc0a0f2ffa0e0dceb8821f462f4707e6492ed9c3994532700dca74843e8327ea85e014dd16add2fc5f542ba1f22ad8aad8b2a46380e68ef
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -13,6 +13,10 @@ When a change is made to a specific column, the difference between before and af
|
|
13
13
|
|
14
14
|
To make it easier for analysts, save the table name, column name, and data before and after changes as separate columns.
|
15
15
|
|
16
|
+
The name of this gem comes from one of Hideo Kojima's game works, ["Snatcher"](https://en.wikipedia.org/wiki/Snatcher_(video_game)).
|
17
|
+
|
18
|
+
It was the first of his game works to introduce cinematic direction, and "Snapcher" is also the first of my gem works.
|
19
|
+
|
16
20
|
## Supported
|
17
21
|
|
18
22
|
### Snapcher supports Ruby versions:
|
@@ -76,3 +80,11 @@ snapcher.action # => "update"
|
|
76
80
|
snapcher.before_params # => "Gillian Seed"
|
77
81
|
snapcher.after_params # => "Mika Slayton"
|
78
82
|
```
|
83
|
+
If the "Snatcher" column you want to capture is not user_id, you can specify this.
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
class User < ActiveRecord::Base
|
87
|
+
scanning column_name: "name", change_user_column: "id"
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
data/lib/snapcher/junker.rb
CHANGED
@@ -32,7 +32,7 @@ module Snapcher
|
|
32
32
|
run_scanning(action: "create",
|
33
33
|
column_name: snapcher_options[:column_name],
|
34
34
|
after_params: snapcher_attributes[snapcher_options[:column_name]],
|
35
|
-
user_id:
|
35
|
+
user_id: snatch,
|
36
36
|
table_name: self.class.table_name)
|
37
37
|
end
|
38
38
|
|
@@ -42,7 +42,7 @@ module Snapcher
|
|
42
42
|
run_scanning(action: "update",
|
43
43
|
column_name: snapcher_options[:column_name],
|
44
44
|
table_name: self.class.table_name,
|
45
|
-
user_id:
|
45
|
+
user_id: snatch,
|
46
46
|
before_params: snapcher_changes[:before_params],
|
47
47
|
after_params: snapcher_changes[:after_params])
|
48
48
|
end
|
@@ -53,7 +53,7 @@ module Snapcher
|
|
53
53
|
run_scanning(action: "destroy",
|
54
54
|
column_name: snapcher_options[:column_name],
|
55
55
|
table_name: self.class.table_name,
|
56
|
-
user_id:
|
56
|
+
user_id: snatch)
|
57
57
|
end
|
58
58
|
|
59
59
|
# List of attributes that are snapcher.
|
@@ -62,6 +62,10 @@ module Snapcher
|
|
62
62
|
normalize_enum_changes(snapcher_attributes)
|
63
63
|
end
|
64
64
|
|
65
|
+
def snatch
|
66
|
+
snapcher_attributes[snapcher_options[:change_user_column]] || snapcher_attributes["user_id"]
|
67
|
+
end
|
68
|
+
|
65
69
|
def scanning_change_values
|
66
70
|
all_changes = if respond_to?(:changes_to_save)
|
67
71
|
changes_to_save
|
@@ -75,9 +79,10 @@ module Snapcher
|
|
75
79
|
end
|
76
80
|
|
77
81
|
def snapcher_changes
|
82
|
+
snapcher_attributes = filter_encrypted_attrs(attributes)
|
78
83
|
filtered_changes = scanning_change_values
|
79
|
-
|
80
84
|
monitoring_column_name = snapcher_options[:column_name]
|
85
|
+
change_user_column = snapcher_options[:change_user_column]
|
81
86
|
|
82
87
|
return if filtered_changes[monitoring_column_name.to_s].nil?
|
83
88
|
|
data/lib/snapcher/version.rb
CHANGED
data/lib/snapcher.rb
CHANGED
data/sample-app/Gemfile.lock
CHANGED
data/sample-app/db/schema.rb
CHANGED
@@ -10,7 +10,24 @@
|
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema[7.1].define(version:
|
13
|
+
ActiveRecord::Schema[7.1].define(version: 2024_06_25_084542) do
|
14
|
+
create_table "gifts", force: :cascade do |t|
|
15
|
+
t.integer "from_user_id"
|
16
|
+
t.integer "to_user_id"
|
17
|
+
t.string "name"
|
18
|
+
t.datetime "created_at", null: false
|
19
|
+
t.datetime "updated_at", null: false
|
20
|
+
end
|
21
|
+
|
22
|
+
create_table "posts", force: :cascade do |t|
|
23
|
+
t.string "title"
|
24
|
+
t.text "body"
|
25
|
+
t.integer "user_id", null: false
|
26
|
+
t.datetime "created_at", null: false
|
27
|
+
t.datetime "updated_at", null: false
|
28
|
+
t.index ["user_id"], name: "index_posts_on_user_id"
|
29
|
+
end
|
30
|
+
|
14
31
|
create_table "scannings", force: :cascade do |t|
|
15
32
|
t.integer "scannable_id"
|
16
33
|
t.string "scannable_type"
|
@@ -36,4 +53,5 @@ ActiveRecord::Schema[7.1].define(version: 2024_05_09_025320) do
|
|
36
53
|
t.datetime "updated_at", null: false
|
37
54
|
end
|
38
55
|
|
56
|
+
add_foreign_key "posts", "users"
|
39
57
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snapcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ryosk7
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Snapcher is an ORM extension that logs changes to specific columns to your model.
|
@@ -43,7 +43,6 @@ files:
|
|
43
43
|
- lib/snapcher/scanning.rb
|
44
44
|
- lib/snapcher/sweeper.rb
|
45
45
|
- lib/snapcher/version.rb
|
46
|
-
- logo/snapcher_logo.png
|
47
46
|
- sample-app/.dockerignore
|
48
47
|
- sample-app/.gitattributes
|
49
48
|
- sample-app/.gitignore
|
@@ -62,6 +61,7 @@ files:
|
|
62
61
|
- sample-app/app/jobs/application_job.rb
|
63
62
|
- sample-app/app/models/application_record.rb
|
64
63
|
- sample-app/app/models/concerns/.keep
|
64
|
+
- sample-app/app/models/gift.rb
|
65
65
|
- sample-app/app/models/post.rb
|
66
66
|
- sample-app/app/models/user.rb
|
67
67
|
- sample-app/app/views/layouts/application.html.erb
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- sample-app/db/migrate/20231019151334_install_snapcher.rb
|
92
92
|
- sample-app/db/migrate/20240509025320_add_user_id_to_scannings.rb
|
93
93
|
- sample-app/db/migrate/20240509080448_create_posts.rb
|
94
|
+
- sample-app/db/migrate/20240625084542_create_gifts.rb
|
94
95
|
- sample-app/db/schema.rb
|
95
96
|
- sample-app/db/seeds.rb
|
96
97
|
- sample-app/lib/assets/.keep
|
data/logo/snapcher_logo.png
DELETED
Binary file
|