audit_log_rails 0.1.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 +7 -0
- data/.rubocop.yml +8 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README.md +776 -0
- data/Rakefile +12 -0
- data/lib/audit_logger/actor_context_resolver.rb +65 -0
- data/lib/audit_logger/audit_log.rb +47 -0
- data/lib/audit_logger/auditable.rb +47 -0
- data/lib/audit_logger/change_extractor.rb +75 -0
- data/lib/audit_logger/config_validator.rb +76 -0
- data/lib/audit_logger/configuration.rb +48 -0
- data/lib/audit_logger/humanizer.rb +112 -0
- data/lib/audit_logger/model_config.rb +80 -0
- data/lib/audit_logger/railtie.rb +17 -0
- data/lib/audit_logger/record_audit_entry.rb +61 -0
- data/lib/audit_logger/version.rb +5 -0
- data/lib/audit_logger.rb +44 -0
- data/lib/generators/audit_logger/install_generator.rb +33 -0
- data/lib/generators/audit_logger/templates/audit_logger_initializer.rb.tt +48 -0
- data/lib/generators/audit_logger/templates/create_audit_logs.rb.tt +32 -0
- data/sig/audit_logger.rbs +4 -0
- metadata +107 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module AuditLogger
|
|
7
|
+
module Generators
|
|
8
|
+
class InstallGenerator < Rails::Generators::Base
|
|
9
|
+
include ActiveRecord::Generators::Migration
|
|
10
|
+
|
|
11
|
+
source_root File.expand_path("templates", __dir__)
|
|
12
|
+
desc "Cria a migration inicial e o initializer base do AuditLogger."
|
|
13
|
+
|
|
14
|
+
def copy_migration
|
|
15
|
+
migration_template "create_audit_logs.rb.tt", "db/migrate/create_audit_logs.rb"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def copy_initializer
|
|
19
|
+
template "audit_logger_initializer.rb.tt", "config/initializers/audit_logger.rb"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def migration_version
|
|
25
|
+
"[#{ActiveRecord::VERSION::STRING.to_f}]"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.next_migration_number(path)
|
|
29
|
+
ActiveRecord::Generators::Base.next_migration_number(path)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Configuracao base da gem de auditoria.
|
|
4
|
+
# Ajuste os resolvers conforme o contexto do projeto cliente.
|
|
5
|
+
AuditLogger.configure do |config|
|
|
6
|
+
# Resolve o identificador principal do ator que executou a acao.
|
|
7
|
+
# Descomente e ajuste conforme o projeto.
|
|
8
|
+
# Exemplo:
|
|
9
|
+
# config.changed_by_id_resolver = -> { Current.user&.id }
|
|
10
|
+
|
|
11
|
+
# Resolve o tipo, perfil ou classe do ator que executou a acao.
|
|
12
|
+
# Descomente e ajuste conforme o projeto.
|
|
13
|
+
# Exemplo:
|
|
14
|
+
# config.changed_by_type_resolver = -> { Current.user&.class&.name }
|
|
15
|
+
|
|
16
|
+
# Armazena metadados extras do ator e da requisicao em JSON.
|
|
17
|
+
# Descomente e ajuste conforme o projeto.
|
|
18
|
+
# Exemplo:
|
|
19
|
+
# config.changed_by_other_resolver = lambda do
|
|
20
|
+
# {
|
|
21
|
+
# name: Current.user&.name,
|
|
22
|
+
# email: Current.user&.email
|
|
23
|
+
# }.compact
|
|
24
|
+
# end
|
|
25
|
+
|
|
26
|
+
# Permite correlacionar eventos da mesma sessao ou fluxo.
|
|
27
|
+
# Se nada for configurado aqui, a gem gera um UUID automaticamente.
|
|
28
|
+
# Exemplo:
|
|
29
|
+
# config.uuid_resolver = -> { Current.audit_uuid }
|
|
30
|
+
|
|
31
|
+
# Mantem o IP em coluna propria para facilitar consulta.
|
|
32
|
+
# Descomente e ajuste conforme o projeto.
|
|
33
|
+
# Exemplo:
|
|
34
|
+
# config.ip_resolver = -> { Current.request&.remote_ip }
|
|
35
|
+
|
|
36
|
+
# Habilita a humanizacao por padrao.
|
|
37
|
+
config.humanize_by_default = true
|
|
38
|
+
|
|
39
|
+
# Escopos padrao usados para localizar traducoes via I18n.
|
|
40
|
+
config.i18n_scopes = ["activerecord.attributes", "attributes"]
|
|
41
|
+
|
|
42
|
+
# Campos que normalmente nao agregam valor na auditoria.
|
|
43
|
+
config.ignored_attributes = [:created_at, :updated_at, :lock_version]
|
|
44
|
+
|
|
45
|
+
# Humanizer opcional.
|
|
46
|
+
# Se retornar nil, a gem usa o fallback padrao baseado em I18n.
|
|
47
|
+
config.humanizer = ->(_model_klass, _attribute, _old_value, _new_value) { nil }
|
|
48
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class CreateAuditLogs < ActiveRecord::Migration<%= migration_version %>
|
|
4
|
+
def up
|
|
5
|
+
unless table_exists?(:audit_logs)
|
|
6
|
+
create_table :audit_logs do |t|
|
|
7
|
+
t.string :model_class_name, null: false
|
|
8
|
+
t.string :id_object, null: false
|
|
9
|
+
t.string :action, null: false
|
|
10
|
+
t.string :uuid, null: false
|
|
11
|
+
t.bigint :changed_by_id
|
|
12
|
+
t.string :changed_by_type
|
|
13
|
+
t.jsonb :changed_by_other, null: false, default: {}
|
|
14
|
+
t.jsonb :audited_changes, null: false, default: {}
|
|
15
|
+
t.jsonb :audited_changes_humanize, null: false, default: {}
|
|
16
|
+
t.string :ip_remote
|
|
17
|
+
t.datetime :deleted_at
|
|
18
|
+
t.timestamps
|
|
19
|
+
end
|
|
20
|
+
add_index :audit_logs, :uuid
|
|
21
|
+
add_index :audit_logs, [:model_class_name, :id_object]
|
|
22
|
+
add_index :audit_logs, :action
|
|
23
|
+
add_index :audit_logs, [:changed_by_type, :changed_by_id]
|
|
24
|
+
add_index :audit_logs, :created_at
|
|
25
|
+
add_index :audit_logs, :deleted_at
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def down
|
|
30
|
+
drop_table :audit_logs if table_exists?(:audit_logs)
|
|
31
|
+
end
|
|
32
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: audit_log_rails
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- DHC soluções
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 2026-05-22 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: activerecord
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '7.0'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '9.0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '7.0'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '9.0'
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: railties
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '7.0'
|
|
39
|
+
- - "<"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '9.0'
|
|
42
|
+
type: :runtime
|
|
43
|
+
prerelease: false
|
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '7.0'
|
|
49
|
+
- - "<"
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
version: '9.0'
|
|
52
|
+
description: AuditLogger registra eventos de create, update e destroy em tabela propria,
|
|
53
|
+
com payload bruto, payload humanizado e configuracao flexivel por initializer.
|
|
54
|
+
email:
|
|
55
|
+
- dhcsolucoesinformatica@gmail.com
|
|
56
|
+
executables: []
|
|
57
|
+
extensions: []
|
|
58
|
+
extra_rdoc_files: []
|
|
59
|
+
files:
|
|
60
|
+
- ".rubocop.yml"
|
|
61
|
+
- CHANGELOG.md
|
|
62
|
+
- CODE_OF_CONDUCT.md
|
|
63
|
+
- LICENSE.txt
|
|
64
|
+
- README.md
|
|
65
|
+
- Rakefile
|
|
66
|
+
- lib/audit_logger.rb
|
|
67
|
+
- lib/audit_logger/actor_context_resolver.rb
|
|
68
|
+
- lib/audit_logger/audit_log.rb
|
|
69
|
+
- lib/audit_logger/auditable.rb
|
|
70
|
+
- lib/audit_logger/change_extractor.rb
|
|
71
|
+
- lib/audit_logger/config_validator.rb
|
|
72
|
+
- lib/audit_logger/configuration.rb
|
|
73
|
+
- lib/audit_logger/humanizer.rb
|
|
74
|
+
- lib/audit_logger/model_config.rb
|
|
75
|
+
- lib/audit_logger/railtie.rb
|
|
76
|
+
- lib/audit_logger/record_audit_entry.rb
|
|
77
|
+
- lib/audit_logger/version.rb
|
|
78
|
+
- lib/generators/audit_logger/install_generator.rb
|
|
79
|
+
- lib/generators/audit_logger/templates/audit_logger_initializer.rb.tt
|
|
80
|
+
- lib/generators/audit_logger/templates/create_audit_logs.rb.tt
|
|
81
|
+
- sig/audit_logger.rbs
|
|
82
|
+
homepage: https://github.com/hcortezia/audit_log_rails
|
|
83
|
+
licenses:
|
|
84
|
+
- MIT
|
|
85
|
+
metadata:
|
|
86
|
+
allowed_push_host: https://rubygems.org
|
|
87
|
+
homepage_uri: https://github.com/hcortezia/audit_log_rails
|
|
88
|
+
source_code_uri: https://github.com/hcortezia/audit_log_rails
|
|
89
|
+
changelog_uri: https://github.com/hcortezia/audit_log_rails/blob/main/CHANGELOG.md
|
|
90
|
+
rdoc_options: []
|
|
91
|
+
require_paths:
|
|
92
|
+
- lib
|
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: 3.1.0
|
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0'
|
|
103
|
+
requirements: []
|
|
104
|
+
rubygems_version: 3.6.2
|
|
105
|
+
specification_version: 4
|
|
106
|
+
summary: Gem Rails para auditoria de models ActiveRecord
|
|
107
|
+
test_files: []
|