active_pg_log 0.1.1 → 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/.gitignore +3 -0
- data/.travis.yml +1 -1
- data/Gemfile +2 -1
- data/README.md +12 -5
- data/active_pg_log.gemspec +3 -1
- data/bin/console +37 -3
- data/lib/active_pg_log/active_log.rb +19 -16
- data/lib/active_pg_log/active_pg_log_table.rb +2 -0
- data/lib/active_pg_log/{trigger.rb → active_trigger.rb} +3 -3
- data/lib/active_pg_log.rb +3 -3
- data/spec/active_log_spec.rb +15 -0
- data/spec/active_pg_log_spec.rb +10 -0
- data/spec/active_pg_log_table_spec.rb +15 -0
- data/spec/my_object_test_spec.rb +19 -0
- data/spec/spec_helper.rb +41 -3
- metadata +37 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f24883a78dd744db11ff610f457bbd424b7265d618fa63d6ee48b31d4fcbac7
|
4
|
+
data.tar.gz: 5a347455d97d9019db3b6197d1a11042f328d350cd327ffbdc025d616530d61a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 219732a497ccbc7f0981ee9c68e5dacd24c66baf26db158924dc8b07fc045858e147ec81aaae95d0f5db81b91f69abc3cadf8c4af7ff3074cbb9f1a873e6ff28
|
7
|
+
data.tar.gz: 17e8f49846761a386e3bf767581984b53baf5b72a89df6a3e486c517dd3a2d1976d46b368243a2f50fdaac24eba415865ff1c8dd6be38cb9d43469abd87125ca
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# ActivePgLog
|
2
2
|
|
3
|
-
|
3
|
+
ActivePgLog will record all changes made to the class either using ActiveRecord or in the database itself. Generating a new tuple in the log table and ensuring traceability.
|
4
4
|
|
5
|
-
|
5
|
+
The ActivePgLog gem was conceived with the idea of being a simple but flexible log.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,7 +22,14 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
After performing the previous steps. Go into your project's root directory and type `rails g active_pg_log:install` or `rails g active_pg_log:uninstall` to remove the settings.
|
26
|
+
|
27
|
+
After executing the above command. Just add the ActivePgLog::ActiveLog module to your class. Example:
|
28
|
+
|
29
|
+
class Person
|
30
|
+
include ActivePgLog::ActiveLog
|
31
|
+
attr_accessor :name, :phone
|
32
|
+
end
|
26
33
|
|
27
34
|
## Development
|
28
35
|
|
@@ -32,7 +39,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
39
|
|
33
40
|
## Contributing
|
34
41
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
42
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/waejl/active_pg_log. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
43
|
|
37
44
|
## License
|
38
45
|
|
@@ -40,4 +47,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
40
47
|
|
41
48
|
## Code of Conduct
|
42
49
|
|
43
|
-
Everyone interacting in the ActivePgLog project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
50
|
+
Everyone interacting in the ActivePgLog project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/waejl/active_pg_log/blob/master/CODE_OF_CONDUCT.md).
|
data/active_pg_log.gemspec
CHANGED
@@ -32,7 +32,9 @@ Gem::Specification.new do |spec|
|
|
32
32
|
# spec.executables = %w[setup console]
|
33
33
|
spec.require_paths = ['lib']
|
34
34
|
|
35
|
-
spec.add_development_dependency '
|
35
|
+
spec.add_development_dependency 'active_record'
|
36
|
+
spec.add_development_dependency 'bundler', '~> 2.2.32'
|
37
|
+
spec.add_development_dependency 'pg', '~> 1.2.3'
|
36
38
|
spec.add_development_dependency 'rake', '~> 10.0'
|
37
39
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
38
40
|
end
|
data/bin/console
CHANGED
@@ -1,7 +1,41 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'active_pg_log'
|
5
|
+
require 'active_record'
|
6
|
+
|
7
|
+
begin
|
8
|
+
ActiveRecord::Base.establish_connection({
|
9
|
+
adapter: 'postgresql',
|
10
|
+
database: 'active_pg_log',
|
11
|
+
min_messages: 'warning',
|
12
|
+
host: 'localhost',
|
13
|
+
username: 'postgres',
|
14
|
+
password: 'password'
|
15
|
+
})
|
16
|
+
connection = ActiveRecord::Base.connection
|
17
|
+
connection.execute('SELECT 1')
|
18
|
+
connection.execute('create table if not exists active_pg_log_tables(
|
19
|
+
id serial not null,
|
20
|
+
name varchar(255)
|
21
|
+
);')
|
22
|
+
# connection.execute('create database active_pg_log;')
|
23
|
+
# connection.reconect!({
|
24
|
+
# adapter: 'postgresql',
|
25
|
+
# database: 'active_pg_log',
|
26
|
+
# min_messages: 'warning',
|
27
|
+
# host: 'localhost',
|
28
|
+
# username: 'postgres',
|
29
|
+
# password: 'password'
|
30
|
+
# })
|
31
|
+
rescue StandardError => e
|
32
|
+
puts '-' * 80
|
33
|
+
puts 'Unable to connect to database. Please run:'
|
34
|
+
puts
|
35
|
+
puts ' createdb pg_audit_log_test'
|
36
|
+
puts '-' * 80
|
37
|
+
raise e
|
38
|
+
end
|
5
39
|
|
6
40
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
41
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +44,5 @@ require "active_pg_log"
|
|
10
44
|
# require "pry"
|
11
45
|
# Pry.start
|
12
46
|
|
13
|
-
require
|
47
|
+
require 'irb'
|
14
48
|
IRB.start(__FILE__)
|
@@ -1,29 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module ActivePgLog
|
4
|
-
|
5
|
-
|
3
|
+
module ActivePgLog
|
4
|
+
# ActiveLog doc
|
5
|
+
module ActiveLog
|
6
|
+
def self.included(clazz)
|
7
|
+
@active_trigger = ActivePgLog::ActiveTrigger.new(clazz.connection)
|
6
8
|
|
7
|
-
|
9
|
+
return if @active_trigger.include?("trigger_log_#{clazz.table_name}_insert_update", clazz.table_name)
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
clazz.connection.execute(create_log_ddl_trigger(clazz))
|
12
|
+
end
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
def disable_log_ddl_trigger(clazz)
|
15
|
+
clazz.connection.execute("drop trigger if exists trigger_log_#{self.class.table_name}_insert_update on #{self.class.table_name} cascade;")
|
16
|
+
nil
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
def pg_logs
|
20
|
+
ActivePgLogTable.where(table_name: self.class.table_name)
|
21
|
+
end
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
class << self
|
24
|
+
def create_log_ddl_trigger(clazz)
|
25
|
+
%(
|
24
26
|
drop trigger if exists trigger_log_#{clazz.table_name}_insert_update on #{clazz.table_name} cascade;
|
25
27
|
CREATE TRIGGER trigger_log_#{clazz.table_name}_insert_update after insert or update on #{clazz.table_name} for each row execute procedure public.active_pg_loging();
|
26
28
|
)
|
29
|
+
end
|
27
30
|
end
|
28
31
|
end
|
29
32
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
class ActivePgLog::ActiveTrigger
|
2
2
|
attr_accessor :dados
|
3
3
|
|
4
|
-
def initialize
|
5
|
-
@dados =
|
4
|
+
def initialize(connection)
|
5
|
+
@dados = connection.select_all(query)
|
6
6
|
end
|
7
7
|
|
8
8
|
def include?(trigger_name, table_name)
|
9
|
-
return false if @dados.rows.size.zero?
|
9
|
+
return false if !defined?(@dados.rows) || @dados.rows.size.zero?
|
10
10
|
|
11
11
|
@dados.select { |e| e['table_name'] == table_name && e['trigger_name'] == trigger_name }.size.positive?
|
12
12
|
end
|
data/lib/active_pg_log.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'active_record'
|
4
3
|
module ActivePgLog
|
5
|
-
VERSION = '0.1.
|
4
|
+
VERSION = '0.1.3'
|
6
5
|
end
|
7
6
|
|
7
|
+
require 'active_record'
|
8
8
|
require 'active_pg_log/active_pg_log_table'
|
9
9
|
require 'active_pg_log/prepare'
|
10
|
-
require 'active_pg_log/
|
10
|
+
require 'active_pg_log/active_trigger'
|
11
11
|
require 'active_pg_log/active_log'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe ActivePgLog::ActiveLog do
|
4
|
+
it 'respond to pg_logs' do
|
5
|
+
expect(subject.instance_methods).to include(:pg_logs)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'respond to disable_log_ddl_trigger' do
|
9
|
+
expect(subject.instance_methods).to include(:disable_log_ddl_trigger)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'respond to create_log_ddl_trigger' do
|
13
|
+
expect(subject).to respond_to(:create_log_ddl_trigger)
|
14
|
+
end
|
15
|
+
end
|
data/spec/active_pg_log_spec.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RSpec.describe ActivePgLog do
|
2
4
|
it 'has a version number' do
|
3
5
|
expect(ActivePgLog::VERSION).not_to be nil
|
4
6
|
end
|
7
|
+
|
8
|
+
it 'trigger has required' do
|
9
|
+
expect(ActivePgLog::ActiveTrigger).to_not be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'active_log has required' do
|
13
|
+
expect(ActivePgLog::ActiveLog).to_not be_nil
|
14
|
+
end
|
5
15
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class MyObjectTest < ActiveRecord::Base
|
4
|
+
include ActivePgLog::ActiveLog
|
5
|
+
end
|
6
|
+
|
7
|
+
RSpec.describe ActivePgLogTable do
|
8
|
+
before do
|
9
|
+
MyObjectTest.create(name: 'Test Object')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'on create test object Log Table is incremented' do
|
13
|
+
expect(subject).to count(1)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_pg_log'
|
4
|
+
|
5
|
+
class MyObjectTest < ActiveRecord::Base
|
6
|
+
include ActivePgLog::ActiveLog
|
7
|
+
end
|
8
|
+
|
9
|
+
RSpec.describe MyObjectTest do
|
10
|
+
context 'Include lib' do
|
11
|
+
it 'respond_to pg_logs' do
|
12
|
+
expect(subject).to respond_to(:pg_logs)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'respond_to disable_log_ddl_trigger' do
|
16
|
+
expect(subject).to respond_to(:disable_log_ddl_trigger)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,47 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'active_pg_log'
|
5
|
+
require 'active_record'
|
6
|
+
require 'pg'
|
7
|
+
|
8
|
+
begin
|
9
|
+
ActiveRecord::Base.establish_connection({
|
10
|
+
adapter: 'postgresql',
|
11
|
+
database: 'active_pg_log',
|
12
|
+
min_messages: 'warning',
|
13
|
+
host: 'localhost',
|
14
|
+
username: 'postgres'
|
15
|
+
})
|
16
|
+
connection = ActiveRecord::Base.connection
|
17
|
+
connection.execute('SELECT 1')
|
18
|
+
connection.execute('create table if not exists my_object_tests(
|
19
|
+
id serial not null,
|
20
|
+
name varchar(255)
|
21
|
+
);')
|
22
|
+
# connection.execute('create database active_pg_log;')
|
23
|
+
# connection.reconect!({
|
24
|
+
# adapter: 'postgresql',
|
25
|
+
# database: 'active_pg_log',
|
26
|
+
# min_messages: 'warning',
|
27
|
+
# host: 'localhost',
|
28
|
+
# username: 'postgres',
|
29
|
+
# password: 'password'
|
30
|
+
# })
|
31
|
+
rescue StandardError => e
|
32
|
+
puts '-' * 80
|
33
|
+
puts 'Unable to connect to database. Please run:'
|
34
|
+
puts
|
35
|
+
puts ' createdb pg_audit_log_test'
|
36
|
+
puts '-' * 80
|
37
|
+
raise e
|
38
|
+
end
|
39
|
+
|
40
|
+
ActiveRecord::Base.default_timezone = :local
|
3
41
|
|
4
42
|
RSpec.configure do |config|
|
5
43
|
# Enable flags like --only-failures and --next-failure
|
6
|
-
config.example_status_persistence_file_path =
|
44
|
+
config.example_status_persistence_file_path = '.rspec_status'
|
7
45
|
|
8
46
|
# Disable RSpec exposing methods globally on `Module` and `main`
|
9
47
|
config.disable_monkey_patching!
|
metadata
CHANGED
@@ -1,29 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_pg_log
|
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
|
- Wesley Oliveira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: active_record
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
33
|
+
version: 2.2.32
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.2.32
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pg
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.2.3
|
20
48
|
type: :development
|
21
49
|
prerelease: false
|
22
50
|
version_requirements: !ruby/object:Gem::Requirement
|
23
51
|
requirements:
|
24
52
|
- - "~>"
|
25
53
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
54
|
+
version: 1.2.3
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rake
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,11 +102,14 @@ files:
|
|
74
102
|
- lib/active_pg_log.rb
|
75
103
|
- lib/active_pg_log/active_log.rb
|
76
104
|
- lib/active_pg_log/active_pg_log_table.rb
|
105
|
+
- lib/active_pg_log/active_trigger.rb
|
77
106
|
- lib/active_pg_log/prepare.rb
|
78
|
-
- lib/active_pg_log/trigger.rb
|
79
107
|
- lib/generators/active_pg_log/install_generator.rb
|
80
108
|
- lib/generators/active_pg_log/templates/lib/tasks/active_pg_log.rake
|
109
|
+
- spec/active_log_spec.rb
|
81
110
|
- spec/active_pg_log_spec.rb
|
111
|
+
- spec/active_pg_log_table_spec.rb
|
112
|
+
- spec/my_object_test_spec.rb
|
82
113
|
- spec/spec_helper.rb
|
83
114
|
homepage: https://github.com/waejl/active_pg_log
|
84
115
|
licenses:
|
@@ -103,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
134
|
- !ruby/object:Gem::Version
|
104
135
|
version: '0'
|
105
136
|
requirements: []
|
106
|
-
rubygems_version: 3.
|
137
|
+
rubygems_version: 3.2.32
|
107
138
|
signing_key:
|
108
139
|
specification_version: 4
|
109
140
|
summary: Gem para log de tabelas via banco de dados PostgreSQL sincronizado com ActiveRecord
|