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.
@@ -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
@@ -0,0 +1,4 @@
1
+ module AuditLogger
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ 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: []