velocity_audited 5.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +115 -0
  3. data/.gitignore +17 -0
  4. data/.standard.yml +5 -0
  5. data/.yardopts +3 -0
  6. data/Appraisals +44 -0
  7. data/CHANGELOG.md +419 -0
  8. data/Gemfile +3 -0
  9. data/LICENSE +19 -0
  10. data/README.md +433 -0
  11. data/Rakefile +18 -0
  12. data/gemfiles/rails50.gemfile +10 -0
  13. data/gemfiles/rails51.gemfile +10 -0
  14. data/gemfiles/rails52.gemfile +10 -0
  15. data/gemfiles/rails60.gemfile +10 -0
  16. data/gemfiles/rails61.gemfile +10 -0
  17. data/gemfiles/rails70.gemfile +10 -0
  18. data/lib/audited/audit.rb +198 -0
  19. data/lib/audited/auditor.rb +476 -0
  20. data/lib/audited/railtie.rb +16 -0
  21. data/lib/audited/rspec_matchers.rb +228 -0
  22. data/lib/audited/sweeper.rb +67 -0
  23. data/lib/audited/version.rb +5 -0
  24. data/lib/audited-rspec.rb +6 -0
  25. data/lib/audited.rb +49 -0
  26. data/lib/generators/audited/install_generator.rb +27 -0
  27. data/lib/generators/audited/migration.rb +17 -0
  28. data/lib/generators/audited/migration_helper.rb +11 -0
  29. data/lib/generators/audited/templates/add_association_to_audits.rb +13 -0
  30. data/lib/generators/audited/templates/add_comment_to_audits.rb +11 -0
  31. data/lib/generators/audited/templates/add_remote_address_to_audits.rb +12 -0
  32. data/lib/generators/audited/templates/add_request_uuid_to_audits.rb +12 -0
  33. data/lib/generators/audited/templates/add_version_to_auditable_index.rb +23 -0
  34. data/lib/generators/audited/templates/install.rb +32 -0
  35. data/lib/generators/audited/templates/rename_association_to_associated.rb +25 -0
  36. data/lib/generators/audited/templates/rename_changes_to_audited_changes.rb +11 -0
  37. data/lib/generators/audited/templates/rename_parent_to_association.rb +13 -0
  38. data/lib/generators/audited/templates/revert_polymorphic_indexes_order.rb +22 -0
  39. data/lib/generators/audited/upgrade_generator.rb +70 -0
  40. data/lib/velocity_audited.rb +5 -0
  41. data/spec/audited/audit_spec.rb +357 -0
  42. data/spec/audited/auditor_spec.rb +1097 -0
  43. data/spec/audited/rspec_matchers_spec.rb +69 -0
  44. data/spec/audited/sweeper_spec.rb +133 -0
  45. data/spec/audited_spec.rb +18 -0
  46. data/spec/audited_spec_helpers.rb +32 -0
  47. data/spec/rails_app/app/assets/config/manifest.js +2 -0
  48. data/spec/rails_app/config/application.rb +13 -0
  49. data/spec/rails_app/config/database.yml +26 -0
  50. data/spec/rails_app/config/environment.rb +5 -0
  51. data/spec/rails_app/config/environments/test.rb +47 -0
  52. data/spec/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  53. data/spec/rails_app/config/initializers/inflections.rb +2 -0
  54. data/spec/rails_app/config/initializers/secret_token.rb +3 -0
  55. data/spec/rails_app/config/routes.rb +3 -0
  56. data/spec/spec_helper.rb +24 -0
  57. data/spec/support/active_record/models.rb +151 -0
  58. data/spec/support/active_record/postgres/1_change_audited_changes_type_to_json.rb +11 -0
  59. data/spec/support/active_record/postgres/2_change_audited_changes_type_to_jsonb.rb +11 -0
  60. data/spec/support/active_record/schema.rb +90 -0
  61. data/test/db/version_1.rb +17 -0
  62. data/test/db/version_2.rb +18 -0
  63. data/test/db/version_3.rb +18 -0
  64. data/test/db/version_4.rb +19 -0
  65. data/test/db/version_5.rb +17 -0
  66. data/test/db/version_6.rb +19 -0
  67. data/test/install_generator_test.rb +62 -0
  68. data/test/test_helper.rb +18 -0
  69. data/test/upgrade_generator_test.rb +97 -0
  70. metadata +260 -0
@@ -0,0 +1,18 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :audits, force: true do |t|
3
+ t.column :auditable_id, :integer
4
+ t.column :auditable_type, :string
5
+ t.column :user_id, :integer
6
+ t.column :user_type, :string
7
+ t.column :username, :string
8
+ t.column :action, :string
9
+ t.column :changes, :text
10
+ t.column :version, :integer, default: 0
11
+ t.column :comment, :string
12
+ t.column :created_at, :datetime
13
+ end
14
+
15
+ add_index :audits, [:auditable_id, :auditable_type], name: "auditable_index"
16
+ add_index :audits, [:user_id, :user_type], name: "user_index"
17
+ add_index :audits, :created_at
18
+ end
@@ -0,0 +1,18 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :audits, force: true do |t|
3
+ t.column :auditable_id, :integer
4
+ t.column :auditable_type, :string
5
+ t.column :user_id, :integer
6
+ t.column :user_type, :string
7
+ t.column :username, :string
8
+ t.column :action, :string
9
+ t.column :audited_changes, :text
10
+ t.column :version, :integer, default: 0
11
+ t.column :comment, :string
12
+ t.column :created_at, :datetime
13
+ end
14
+
15
+ add_index :audits, [:auditable_id, :auditable_type], name: "auditable_index"
16
+ add_index :audits, [:user_id, :user_type], name: "user_index"
17
+ add_index :audits, :created_at
18
+ end
@@ -0,0 +1,19 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :audits, force: true do |t|
3
+ t.column :auditable_id, :integer
4
+ t.column :auditable_type, :string
5
+ t.column :user_id, :integer
6
+ t.column :user_type, :string
7
+ t.column :username, :string
8
+ t.column :action, :string
9
+ t.column :audited_changes, :text
10
+ t.column :version, :integer, default: 0
11
+ t.column :comment, :string
12
+ t.column :created_at, :datetime
13
+ t.column :remote_address, :string
14
+ end
15
+
16
+ add_index :audits, [:auditable_id, :auditable_type], name: "auditable_index"
17
+ add_index :audits, [:user_id, :user_type], name: "user_index"
18
+ add_index :audits, :created_at
19
+ end
@@ -0,0 +1,17 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :audits, force: true do |t|
3
+ t.column :auditable_id, :integer
4
+ t.column :auditable_type, :string
5
+ t.column :user_id, :integer
6
+ t.column :user_type, :string
7
+ t.column :username, :string
8
+ t.column :action, :string
9
+ t.column :audited_changes, :text
10
+ t.column :version, :integer, default: 0
11
+ t.column :comment, :string
12
+ t.column :created_at, :datetime
13
+ t.column :remote_address, :string
14
+ t.column :association_id, :integer
15
+ t.column :association_type, :string
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :audits, force: true do |t|
3
+ t.column :auditable_id, :integer
4
+ t.column :auditable_type, :string
5
+ t.column :user_id, :integer
6
+ t.column :user_type, :string
7
+ t.column :username, :string
8
+ t.column :action, :string
9
+ t.column :audited_changes, :text
10
+ t.column :version, :integer, default: 0
11
+ t.column :comment, :string
12
+ t.column :created_at, :datetime
13
+ t.column :remote_address, :string
14
+ t.column :associated_id, :integer
15
+ t.column :associated_type, :string
16
+ end
17
+
18
+ add_index :audits, [:auditable_type, :auditable_id], name: "auditable_index"
19
+ end
@@ -0,0 +1,62 @@
1
+ require "test_helper"
2
+
3
+ require "generators/audited/install_generator"
4
+
5
+ class InstallGeneratorTest < Rails::Generators::TestCase
6
+ destination File.expand_path("../../tmp", __FILE__)
7
+ setup :prepare_destination
8
+ tests Audited::Generators::InstallGenerator
9
+
10
+ test "generate migration with 'text' type for audited_changes column" do
11
+ run_generator
12
+
13
+ assert_migration "db/migrate/install_audited.rb" do |content|
14
+ assert_includes(content, "class InstallAudited")
15
+ assert_includes(content, "t.column :audited_changes, :text")
16
+ end
17
+ end
18
+
19
+ test "generate migration with 'jsonb' type for audited_changes column" do
20
+ run_generator %w[--audited-changes-column-type jsonb]
21
+
22
+ assert_migration "db/migrate/install_audited.rb" do |content|
23
+ assert_includes(content, "class InstallAudited")
24
+ assert_includes(content, "t.column :audited_changes, :jsonb")
25
+ end
26
+ end
27
+
28
+ test "generate migration with 'json' type for audited_changes column" do
29
+ run_generator %w[--audited-changes-column-type json]
30
+
31
+ assert_migration "db/migrate/install_audited.rb" do |content|
32
+ assert_includes(content, "class InstallAudited")
33
+ assert_includes(content, "t.column :audited_changes, :json")
34
+ end
35
+ end
36
+
37
+ test "generate migration with 'string' type for user_id column" do
38
+ run_generator %w[--audited-user-id-column-type string]
39
+
40
+ assert_migration "db/migrate/install_audited.rb" do |content|
41
+ assert_includes(content, "class InstallAudited")
42
+ assert_includes(content, "t.column :user_id, :string")
43
+ end
44
+ end
45
+
46
+ test "generate migration with 'uuid' type for user_id column" do
47
+ run_generator %w[--audited-user-id-column-type uuid]
48
+
49
+ assert_migration "db/migrate/install_audited.rb" do |content|
50
+ assert_includes(content, "class InstallAudited")
51
+ assert_includes(content, "t.column :user_id, :uuid")
52
+ end
53
+ end
54
+
55
+ test "generate migration with correct AR migration parent" do
56
+ run_generator
57
+
58
+ assert_migration "db/migrate/install_audited.rb" do |content|
59
+ assert_includes(content, "class InstallAudited < ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]\n")
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,18 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+
3
+ $LOAD_PATH.unshift File.dirname(__FILE__)
4
+
5
+ require File.expand_path("../../spec/rails_app/config/environment", __FILE__)
6
+ require "rails/test_help"
7
+
8
+ require "audited"
9
+
10
+ class ActiveSupport::TestCase
11
+ setup do
12
+ ActiveRecord::Migration.verbose = false
13
+ end
14
+
15
+ def load_schema(version)
16
+ load File.dirname(__FILE__) + "/db/version_#{version}.rb"
17
+ end
18
+ end
@@ -0,0 +1,97 @@
1
+ require "test_helper"
2
+
3
+ require "generators/audited/upgrade_generator"
4
+
5
+ class UpgradeGeneratorTest < Rails::Generators::TestCase
6
+ destination File.expand_path("../../tmp", __FILE__)
7
+ setup :prepare_destination
8
+ tests Audited::Generators::UpgradeGenerator
9
+ self.use_transactional_tests = false
10
+
11
+ test "should add 'comment' to audits table" do
12
+ load_schema 1
13
+
14
+ run_generator %w[upgrade]
15
+
16
+ assert_migration "db/migrate/add_comment_to_audits.rb" do |content|
17
+ assert_match(/add_column :audits, :comment, :string/, content)
18
+ end
19
+
20
+ assert_migration "db/migrate/rename_changes_to_audited_changes.rb"
21
+ end
22
+
23
+ test "should rename 'changes' to 'audited_changes'" do
24
+ load_schema 2
25
+
26
+ run_generator %w[upgrade]
27
+
28
+ assert_no_migration "db/migrate/add_comment_to_audits.rb"
29
+
30
+ assert_migration "db/migrate/rename_changes_to_audited_changes.rb" do |content|
31
+ assert_match(/rename_column :audits, :changes, :audited_changes/, content)
32
+ end
33
+ end
34
+
35
+ test "should add a 'remote_address' to audits table" do
36
+ load_schema 3
37
+
38
+ run_generator %w[upgrade]
39
+
40
+ assert_migration "db/migrate/add_remote_address_to_audits.rb" do |content|
41
+ assert_match(/add_column :audits, :remote_address, :string/, content)
42
+ end
43
+ end
44
+
45
+ test "should add 'association_id' and 'association_type' to audits table" do
46
+ load_schema 4
47
+
48
+ run_generator %w[upgrade]
49
+
50
+ assert_migration "db/migrate/add_association_to_audits.rb" do |content|
51
+ assert_match(/add_column :audits, :association_id, :integer/, content)
52
+ assert_match(/add_column :audits, :association_type, :string/, content)
53
+ end
54
+ end
55
+
56
+ test "should rename 'association_id' to 'associated_id' and 'association_type' to 'associated_type'" do
57
+ load_schema 5
58
+
59
+ run_generator %w[upgrade]
60
+
61
+ assert_migration "db/migrate/rename_association_to_associated.rb" do |content|
62
+ assert_match(/rename_column :audits, :association_id, :associated_id/, content)
63
+ assert_match(/rename_column :audits, :association_type, :associated_type/, content)
64
+ end
65
+ end
66
+
67
+ test "should add 'request_uuid' to audits table" do
68
+ load_schema 6
69
+
70
+ run_generator %w[upgrade]
71
+
72
+ assert_migration "db/migrate/add_request_uuid_to_audits.rb" do |content|
73
+ assert_match(/add_column :audits, :request_uuid, :string/, content)
74
+ assert_match(/add_index :audits, :request_uuid/, content)
75
+ end
76
+ end
77
+
78
+ test "should add 'version' to auditable_index" do
79
+ load_schema 6
80
+
81
+ run_generator %w[upgrade]
82
+
83
+ assert_migration "db/migrate/add_version_to_auditable_index.rb" do |content|
84
+ assert_match(/add_index :audits, \[:auditable_type, :auditable_id, :version\]/, content)
85
+ end
86
+ end
87
+
88
+ test "generate migration with correct AR migration parent" do
89
+ load_schema 1
90
+
91
+ run_generator %w[upgrade]
92
+
93
+ assert_migration "db/migrate/add_comment_to_audits.rb" do |content|
94
+ assert_includes(content, "class AddCommentToAudits < ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]\n")
95
+ end
96
+ end
97
+ end
metadata ADDED
@@ -0,0 +1,260 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: velocity_audited
3
+ version: !ruby/object:Gem::Version
4
+ version: 5.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Brandon Keepers
8
+ - Kenneth Kalmer
9
+ - Daniel Morrison
10
+ - Brian Ryckbost
11
+ - Steve Richert
12
+ - Ryan Glover
13
+ - Kunal Mittal
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+ date: 2021-12-29 00:00:00.000000000 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: activerecord
21
+ requirement: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '5.0'
26
+ - - "<"
27
+ - !ruby/object:Gem::Version
28
+ version: '7.1'
29
+ type: :runtime
30
+ prerelease: false
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '5.0'
36
+ - - "<"
37
+ - !ruby/object:Gem::Version
38
+ version: '7.1'
39
+ - !ruby/object:Gem::Dependency
40
+ name: appraisal
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: rails
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '5.0'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '7.1'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '5.0'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '7.1'
73
+ - !ruby/object:Gem::Dependency
74
+ name: rspec-rails
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: standard
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: single_cov
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: sqlite3
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.3'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '1.3'
129
+ - !ruby/object:Gem::Dependency
130
+ name: mysql2
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 0.3.20
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 0.3.20
143
+ - !ruby/object:Gem::Dependency
144
+ name: pg
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0.18'
150
+ - - "<"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.0'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0.18'
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: '2.0'
163
+ description: Log all changes to your models
164
+ email: kunal@velocity.in
165
+ executables: []
166
+ extensions: []
167
+ extra_rdoc_files: []
168
+ files:
169
+ - ".github/workflows/ci.yml"
170
+ - ".gitignore"
171
+ - ".standard.yml"
172
+ - ".yardopts"
173
+ - Appraisals
174
+ - CHANGELOG.md
175
+ - Gemfile
176
+ - LICENSE
177
+ - README.md
178
+ - Rakefile
179
+ - gemfiles/rails50.gemfile
180
+ - gemfiles/rails51.gemfile
181
+ - gemfiles/rails52.gemfile
182
+ - gemfiles/rails60.gemfile
183
+ - gemfiles/rails61.gemfile
184
+ - gemfiles/rails70.gemfile
185
+ - lib/audited-rspec.rb
186
+ - lib/audited.rb
187
+ - lib/audited/audit.rb
188
+ - lib/audited/auditor.rb
189
+ - lib/audited/railtie.rb
190
+ - lib/audited/rspec_matchers.rb
191
+ - lib/audited/sweeper.rb
192
+ - lib/audited/version.rb
193
+ - lib/generators/audited/install_generator.rb
194
+ - lib/generators/audited/migration.rb
195
+ - lib/generators/audited/migration_helper.rb
196
+ - lib/generators/audited/templates/add_association_to_audits.rb
197
+ - lib/generators/audited/templates/add_comment_to_audits.rb
198
+ - lib/generators/audited/templates/add_remote_address_to_audits.rb
199
+ - lib/generators/audited/templates/add_request_uuid_to_audits.rb
200
+ - lib/generators/audited/templates/add_version_to_auditable_index.rb
201
+ - lib/generators/audited/templates/install.rb
202
+ - lib/generators/audited/templates/rename_association_to_associated.rb
203
+ - lib/generators/audited/templates/rename_changes_to_audited_changes.rb
204
+ - lib/generators/audited/templates/rename_parent_to_association.rb
205
+ - lib/generators/audited/templates/revert_polymorphic_indexes_order.rb
206
+ - lib/generators/audited/upgrade_generator.rb
207
+ - lib/velocity_audited.rb
208
+ - spec/audited/audit_spec.rb
209
+ - spec/audited/auditor_spec.rb
210
+ - spec/audited/rspec_matchers_spec.rb
211
+ - spec/audited/sweeper_spec.rb
212
+ - spec/audited_spec.rb
213
+ - spec/audited_spec_helpers.rb
214
+ - spec/rails_app/app/assets/config/manifest.js
215
+ - spec/rails_app/config/application.rb
216
+ - spec/rails_app/config/database.yml
217
+ - spec/rails_app/config/environment.rb
218
+ - spec/rails_app/config/environments/test.rb
219
+ - spec/rails_app/config/initializers/backtrace_silencers.rb
220
+ - spec/rails_app/config/initializers/inflections.rb
221
+ - spec/rails_app/config/initializers/secret_token.rb
222
+ - spec/rails_app/config/routes.rb
223
+ - spec/spec_helper.rb
224
+ - spec/support/active_record/models.rb
225
+ - spec/support/active_record/postgres/1_change_audited_changes_type_to_json.rb
226
+ - spec/support/active_record/postgres/2_change_audited_changes_type_to_jsonb.rb
227
+ - spec/support/active_record/schema.rb
228
+ - test/db/version_1.rb
229
+ - test/db/version_2.rb
230
+ - test/db/version_3.rb
231
+ - test/db/version_4.rb
232
+ - test/db/version_5.rb
233
+ - test/db/version_6.rb
234
+ - test/install_generator_test.rb
235
+ - test/test_helper.rb
236
+ - test/upgrade_generator_test.rb
237
+ homepage: https://github.com/Velocity-Engineering/audited
238
+ licenses:
239
+ - MIT
240
+ metadata: {}
241
+ post_install_message:
242
+ rdoc_options: []
243
+ require_paths:
244
+ - lib
245
+ required_ruby_version: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: 2.3.0
250
+ required_rubygems_version: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - ">="
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ requirements: []
256
+ rubygems_version: 3.2.3
257
+ signing_key:
258
+ specification_version: 4
259
+ summary: Log all changes to your models
260
+ test_files: []