sequel-bulk-audit 0.2.0 → 1.0.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 +5 -5
- data/.rubocop.yml +9 -0
- data/.travis.yml +7 -2
- data/CHANGELOG.md +31 -0
- data/Gemfile +3 -1
- data/LICENSE.md +21 -0
- data/README.md +40 -17
- data/Rakefile +3 -1
- data/lib/generators/audit_migration/audit_migration_generator.rb +4 -2
- data/lib/generators/audit_migration/templates/01_migration.rb +16 -17
- data/lib/sequel-bulk-audit.rb +2 -0
- data/lib/sequel/plugins/bulk_audit.rb +36 -29
- data/lib/sequel/plugins/bulk_audit/version.rb +3 -1
- data/sequel-bulk-audit.gemspec +15 -22
- metadata +29 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6667b0a97aa57dd84b2633d9dcd938e794464e8cab2cc151d0392b23686bbde0
|
4
|
+
data.tar.gz: 81bdd9c39e417730cc7bce82d070aba108bace62cd748553eb5b74f1bd9907d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e632ab2b87dd7e73d2e2b7c1b52c4e04f916ef9318d7279d3705a30ed33df3119ce69347948be62d6c6d52b618fad8f245881155e36cb02007c2f0d9b621354
|
7
|
+
data.tar.gz: cc5e5b4b4946e4fa4979ba23c9da74c837158c6815893513b07cb0ccfac59378fda1bdc063791a7dbb846ac00a435b951e8d35652edc0960da99cd7dc1a757a8
|
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Change Log
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
## [1.0.0] - 2020-03-04
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
- integration with rubocop ecosystem
|
9
|
+
|
10
|
+
### Changed
|
11
|
+
|
12
|
+
- instead of creating model_to_table_map temp table now keeps just model_name
|
13
|
+
- temp table now drops on commit
|
14
|
+
- temp table now named as "__schema_table_audit_logs_trid"
|
15
|
+
- temp table now has array of audited table columns
|
16
|
+
- trigger function now uses array of columns from temp table instead of querying for them
|
17
|
+
- remade specs
|
18
|
+
- readme
|
19
|
+
- isolated tests
|
20
|
+
- incapsulated preparations for tests in SeedHelper
|
21
|
+
|
22
|
+
### Removed
|
23
|
+
|
24
|
+
- redundant self
|
25
|
+
- redundant excluded columns option
|
26
|
+
- ability to use #with_current_user on instances of audited class
|
27
|
+
- spec for polymorhic associations
|
28
|
+
|
29
|
+
## [0.2.0] - 2018-06-08
|
30
|
+
|
31
|
+
Initial version.
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source "https://rubygems.org"
|
2
4
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in sequel-bulk-audit.gemspec
|
6
8
|
gemspec
|
data/LICENSE.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018-2020 Umbrellio
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,18 +1,8 @@
|
|
1
|
-
# sequel-bulk-audit [](https://travis-ci.org/umbrellio/sequel-bulk-audit)
|
2
2
|
|
3
|
-
This gem allows you to track any changes in your tables. This approach not only
|
3
|
+
This gem allows you to track any changes in your tables. This approach is not only suitable for model updates but also enables you to track dataset updates.
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
```ruby
|
8
|
-
Model.with_current_user(current_user) do
|
9
|
-
Model.where(...).update(...)
|
10
|
-
end
|
11
|
-
```
|
12
|
-
|
13
|
-
Method #with_current_user expects current_user to be an object (or record) having attributes id and login
|
14
|
-
|
15
|
-
You are able setup polymorphic associations between audit records and corresponding records.
|
5
|
+
Method #with_current_user expects current_user to be an object (or record) having attributes id and login. It sets user_id as 0 and login as "unspecified" by default.
|
16
6
|
|
17
7
|
## Installation
|
18
8
|
|
@@ -30,18 +20,25 @@ Or install it yourself as:
|
|
30
20
|
|
31
21
|
$ gem install sequel-bulk-audit
|
32
22
|
|
33
|
-
After
|
23
|
+
After installation you should run ```rails g audit_migration``` generator.
|
34
24
|
|
35
25
|
You can exdend this migration by attaching the trigger to audited tables.
|
36
26
|
|
27
|
+
Please note, that this gem reqires pg_array and pg_json sequel extensions to work.
|
28
|
+
|
37
29
|
## Usage
|
38
30
|
|
39
|
-
Models
|
31
|
+
Models with audited changes should contain:
|
32
|
+
|
40
33
|
```ruby
|
41
34
|
plugin :bulk_audit
|
42
35
|
```
|
43
36
|
|
44
|
-
Method #with_current_user should wrap all the operations on the table.
|
37
|
+
Method #with_current_user should wrap all the operations on the table. You must use method from the model you are changing for this gem to work correclty.
|
38
|
+
|
39
|
+
Keep in mind that everything wraped in #with_current_user will happen in one transaction.
|
40
|
+
|
41
|
+
Correct usage:
|
45
42
|
|
46
43
|
```ruby
|
47
44
|
Model.with_current_user(current_user) do
|
@@ -49,6 +46,32 @@ Model.with_current_user(current_user) do
|
|
49
46
|
end
|
50
47
|
```
|
51
48
|
|
49
|
+
Correct usage for several models in one transaction:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
DB.transaction do
|
53
|
+
Model.with_current_user(current_user) do # will create temp table for model
|
54
|
+
Model.where(...).update(...)
|
55
|
+
end
|
56
|
+
|
57
|
+
OtherModel.with_current_user(current_user) do # will create temp table for other_model
|
58
|
+
OtherModel.where(...).update(...)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
```
|
62
|
+
|
63
|
+
Incorrect usage:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
SomeOtherModel.with_current_user(current_user) do
|
67
|
+
Model.where(...).update(...)
|
68
|
+
end
|
69
|
+
```
|
70
|
+
|
71
|
+
## Migration from 0.2.0 to 1.0.0
|
72
|
+
|
73
|
+
Recreate audit_changes() function with new changes.
|
74
|
+
|
52
75
|
## Development
|
53
76
|
|
54
77
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -57,4 +80,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
57
80
|
|
58
81
|
## Contributing
|
59
82
|
|
60
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
83
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/sequel-bulk-audit.
|
data/Rakefile
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class AuditMigrationGenerator < Rails::Generators::Base
|
2
|
-
source_root File.expand_path(
|
4
|
+
source_root File.expand_path("templates", __dir__)
|
3
5
|
|
4
6
|
def copy_audit_migration_files
|
5
|
-
version = Time.now.utc.strftime(
|
7
|
+
version = Time.now.utc.strftime("%Y%m%d%H%M%S")
|
6
8
|
copy_file "01_migration.rb", "db/migrate/#{version}_CreateAuditTableAndTrigger.rb"
|
7
9
|
end
|
8
10
|
end
|
@@ -23,7 +23,7 @@ Sequel.migration do
|
|
23
23
|
create_function(:audit_changes, <<~SQL, returns: :trigger, language: :plpgsql, replace: true)
|
24
24
|
DECLARE
|
25
25
|
changes jsonb := '{}'::jsonb;
|
26
|
-
|
26
|
+
column_name text;
|
27
27
|
n jsonb;
|
28
28
|
o jsonb;
|
29
29
|
__audit_info RECORD;
|
@@ -32,28 +32,26 @@ Sequel.migration do
|
|
32
32
|
trid bigint;
|
33
33
|
BEGIN
|
34
34
|
SELECT txid_current() INTO trid;
|
35
|
-
|
36
|
-
|
37
|
-
SELECT
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
AND table_name = quote_ident(TG_TABLE_NAME)
|
42
|
-
ORDER BY ordinal_position
|
35
|
+
|
36
|
+
EXECUTE CONCAT(
|
37
|
+
'SELECT * FROM __', TG_TABLE_SCHEMA, '_', TG_TABLE_NAME, '_audit_info_', trid::text
|
38
|
+
) INTO __audit_info;
|
39
|
+
|
40
|
+
FOREACH column_name IN ARRAY __audit_info.columns
|
43
41
|
LOOP
|
44
42
|
IF (TG_OP = 'UPDATE') THEN
|
45
|
-
EXECUTE 'SELECT to_jsonb(($1).' ||
|
46
|
-
EXECUTE 'SELECT to_jsonb(($1).' ||
|
43
|
+
EXECUTE 'SELECT to_jsonb(($1).' || column_name || ')' INTO n USING NEW;
|
44
|
+
EXECUTE 'SELECT to_jsonb(($1).' || column_name || ')' INTO o USING OLD;
|
47
45
|
IF (o != n) THEN
|
48
|
-
SELECT changes || jsonb_build_object(
|
46
|
+
SELECT changes || jsonb_build_object(column_name, ARRAY[o, n]) INTO changes;
|
49
47
|
END IF;
|
50
48
|
ELSE
|
51
49
|
IF (TG_OP = 'DELETE') THEN
|
52
|
-
EXECUTE 'SELECT to_jsonb(($1).' ||
|
50
|
+
EXECUTE 'SELECT to_jsonb(($1).' || column_name || ')' INTO n USING OLD;
|
53
51
|
ELSIF (TG_OP = 'INSERT') THEN
|
54
|
-
EXECUTE 'SELECT to_jsonb(($1).' ||
|
52
|
+
EXECUTE 'SELECT to_jsonb(($1).' || column_name || ')' INTO n USING NEW;
|
55
53
|
END IF;
|
56
|
-
SELECT changes || jsonb_build_object(
|
54
|
+
SELECT changes || jsonb_build_object(column_name, n) INTO changes;
|
57
55
|
END IF;
|
58
56
|
END LOOP;
|
59
57
|
|
@@ -73,8 +71,9 @@ Sequel.migration do
|
|
73
71
|
END CASE;
|
74
72
|
INSERT INTO audit_logs ("model_type", "model_id", "event", "changed",
|
75
73
|
"created_at", "user_id", "username", "query", "data")
|
76
|
-
VALUES (coalesce(
|
77
|
-
__audit_info.username, current_query(),
|
74
|
+
VALUES (coalesce(__audit_info.model_name::TEXT, TG_TABLE_NAME::TEXT), model_id, TG_OP,
|
75
|
+
changes, NOW(), __audit_info.user_id, __audit_info.username, current_query(),
|
76
|
+
__audit_info.data);
|
78
77
|
RETURN return_record;
|
79
78
|
END;
|
80
79
|
SQL
|
data/lib/sequel-bulk-audit.rb
CHANGED
@@ -1,44 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "sequel/plugins/bulk_audit/version"
|
2
|
-
require
|
4
|
+
require "sequel/model"
|
3
5
|
|
4
6
|
module Sequel
|
5
7
|
module Plugins
|
6
8
|
module BulkAudit
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
module ClassMethods
|
10
|
+
def with_current_user(current_user, attributes = {})
|
11
|
+
db.transaction do
|
12
|
+
data = db.select(
|
13
|
+
Sequel.expr(current_user&.id || 0).as(:user_id),
|
14
|
+
Sequel.cast(current_user&.login || "unspecified", :text).as(:username),
|
15
|
+
Sequel.expr(name).as(:model_name),
|
16
|
+
Sequel.pg_array(stringified_columns).as(:columns),
|
17
|
+
Sequel.pg_jsonb(attributes).as(:data),
|
18
|
+
)
|
19
|
+
|
20
|
+
create_temp_table(data)
|
21
|
+
|
22
|
+
yield if block_given?
|
23
|
+
end
|
10
24
|
end
|
11
|
-
end
|
12
25
|
|
13
|
-
|
14
|
-
|
15
|
-
@@model_to_table_map ||= ObjectSpace.each_object(Class).select do |klazz|
|
16
|
-
next if klazz.name.nil?
|
17
|
-
klazz < Sequel::Model && klazz&.plugins&.include?(Sequel::Plugins::BulkAudit)
|
18
|
-
end.map { |c| [c.to_s, c.table_name] }.to_h.invert
|
26
|
+
def trid
|
27
|
+
db.get(Sequel.function(:txid_current))
|
19
28
|
end
|
20
29
|
|
21
|
-
def
|
22
|
-
|
23
|
-
trid = self.db.select(Sequel.function(:txid_current)).single_value
|
24
|
-
data = self.db.select(Sequel.expr(current_user&.id || 0).as(:user_id),
|
25
|
-
Sequel.cast(current_user&.login || "unspecified", :text).as(:username),
|
26
|
-
Sequel.pg_jsonb(model_to_table_map).as(:model_map),
|
27
|
-
Sequel.pg_jsonb(attributes || {}).as(:data))
|
28
|
-
self.db.create_table!(:"__audit_info_#{trid}", temp: true, as: data)
|
29
|
-
result = yield if block_given?
|
30
|
-
self.db.drop_table?(:"__audit_info_#{trid}")
|
31
|
-
result
|
32
|
-
end
|
30
|
+
def create_temp_table(data)
|
31
|
+
db.create_table!(audit_logs_temp_table_name, on_commit: :drop, temp: true, as: data)
|
33
32
|
end
|
34
|
-
end
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
def stringified_columns
|
35
|
+
columns.map(&:to_s)
|
36
|
+
end
|
39
37
|
|
40
|
-
|
41
|
-
|
38
|
+
# uses trid so temp table would be unique between transactions
|
39
|
+
# uses table_name so temp table would be unique if several models are audited at once
|
40
|
+
def audit_logs_temp_table_name
|
41
|
+
"__#{table_name_with_schema}_audit_info_#{trid}".to_sym
|
42
|
+
end
|
43
|
+
|
44
|
+
def table_name_with_schema
|
45
|
+
return "public_#{table_name}" if table_name.is_a?(Symbol)
|
46
|
+
|
47
|
+
"#{table_name.table}_#{table_name.column}" # for QualifiedIdentifier
|
48
|
+
end
|
42
49
|
end
|
43
50
|
end
|
44
51
|
end
|
data/sequel-bulk-audit.gemspec
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
lib = File.expand_path("lib", __dir__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require "sequel/plugins/bulk_audit/version"
|
5
7
|
|
@@ -9,37 +11,28 @@ Gem::Specification.new do |spec|
|
|
9
11
|
spec.authors = ["Fox"]
|
10
12
|
spec.email = ["strong.drug@gmail.com"]
|
11
13
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage = "https://github.com/
|
15
|
-
spec.post_install_message =
|
14
|
+
spec.summary = "This gem provides a trigger based solution for auditing table changes"
|
15
|
+
spec.description = "Every update on audited table will be logged. You can update in bulk"
|
16
|
+
spec.homepage = "https://github.com/umbrellio/sequel-bulk-audit/"
|
17
|
+
spec.post_install_message = ' Next steps:
|
16
18
|
1. Run rails g audit_migration
|
17
19
|
2. Edit generated migration
|
18
20
|
3. Apply the migration"
|
19
|
-
|
20
|
-
|
21
|
-
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
22
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
23
|
-
if spec.respond_to?(:metadata)
|
24
|
-
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
25
|
-
else
|
26
|
-
raise "RubyGems 2.0 or newer is required to protect against " \
|
27
|
-
"public gem pushes."
|
28
|
-
end
|
21
|
+
'
|
29
22
|
|
30
|
-
spec.files
|
23
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
31
24
|
f.match(%r{^(test|spec|features)/})
|
32
25
|
end
|
33
26
|
spec.bindir = "exe"
|
34
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
35
28
|
spec.require_paths = ["lib"]
|
36
29
|
|
30
|
+
spec.add_dependency "pg", ">= 0.17.0"
|
37
31
|
spec.add_dependency "sequel", ">= 4.0.0"
|
38
|
-
spec.add_dependency "pg", ">= 0.17.0"
|
39
32
|
|
40
|
-
spec.add_development_dependency "bundler", "~>
|
41
|
-
spec.add_development_dependency "
|
42
|
-
spec.add_development_dependency "
|
43
|
-
spec.add_development_dependency "
|
44
|
-
spec.add_development_dependency "
|
33
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
34
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
35
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
36
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
37
|
+
spec.add_development_dependency "rubocop-config-umbrellio"
|
45
38
|
end
|
metadata
CHANGED
@@ -1,101 +1,101 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-bulk-audit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fox
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: pg
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.17.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.17.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: sequel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 4.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 4.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '2.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '10
|
61
|
+
version: '0.10'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '10
|
68
|
+
version: '0.10'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 12.3.3
|
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:
|
82
|
+
version: 12.3.3
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
89
|
+
version: '3.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0
|
96
|
+
version: '3.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rubocop-config-umbrellio
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -108,8 +108,7 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
description: Every update on audited table will be logged. You can update
|
112
|
-
in bulk
|
111
|
+
description: Every update on audited table will be logged. You can update in bulk
|
113
112
|
email:
|
114
113
|
- strong.drug@gmail.com
|
115
114
|
executables: []
|
@@ -118,8 +117,11 @@ extra_rdoc_files: []
|
|
118
117
|
files:
|
119
118
|
- ".gitignore"
|
120
119
|
- ".rspec"
|
120
|
+
- ".rubocop.yml"
|
121
121
|
- ".travis.yml"
|
122
|
+
- CHANGELOG.md
|
122
123
|
- Gemfile
|
124
|
+
- LICENSE.md
|
123
125
|
- README.md
|
124
126
|
- Rakefile
|
125
127
|
- bin/console
|
@@ -131,10 +133,9 @@ files:
|
|
131
133
|
- lib/sequel/plugins/bulk_audit.rb
|
132
134
|
- lib/sequel/plugins/bulk_audit/version.rb
|
133
135
|
- sequel-bulk-audit.gemspec
|
134
|
-
homepage: https://github.com/
|
136
|
+
homepage: https://github.com/umbrellio/sequel-bulk-audit/
|
135
137
|
licenses: []
|
136
|
-
metadata:
|
137
|
-
allowed_push_host: https://rubygems.org
|
138
|
+
metadata: {}
|
138
139
|
post_install_message: " Next steps:\n 1. Run rails g audit_migration\n 2. Edit
|
139
140
|
generated migration\n 3. Apply the migration\"\n "
|
140
141
|
rdoc_options: []
|
@@ -151,8 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
152
|
- !ruby/object:Gem::Version
|
152
153
|
version: '0'
|
153
154
|
requirements: []
|
154
|
-
|
155
|
-
rubygems_version: 2.6.13
|
155
|
+
rubygems_version: 3.0.3
|
156
156
|
signing_key:
|
157
157
|
specification_version: 4
|
158
158
|
summary: This gem provides a trigger based solution for auditing table changes
|