effective_logging 3.5.4 → 4.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 +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +2 -2
- data/app/controllers/admin/logs_controller.rb +3 -0
- data/app/controllers/effective/logs_controller.rb +6 -4
- data/app/datatables/admin/effective_logs_datatable.rb +2 -0
- data/app/datatables/effective_log_changes_datatable.rb +1 -1
- data/app/datatables/effective_logs_datatable.rb +1 -1
- data/app/models/concerns/acts_as_loggable.rb +1 -1
- data/app/models/concerns/effective_logging_log.rb +91 -0
- data/app/models/effective/log.rb +2 -63
- data/app/models/effective_logger.rb +1 -1
- data/config/effective_logging.rb +2 -2
- data/db/migrate/101_create_effective_logging.rb +34 -0
- data/lib/effective_logging/active_record_logger.rb +1 -1
- data/lib/effective_logging/engine.rb +1 -0
- data/lib/effective_logging/version.rb +1 -1
- data/lib/effective_logging.rb +5 -0
- data/lib/generators/effective_logging/install_generator.rb +1 -3
- metadata +90 -4
- data/db/migrate/01_create_effective_logging.rb.erb +0 -38
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1e01f3b3cf8eef9efac4f4632689436b4af1a306d404751c8bb7ef3a4b0bfaac
|
|
4
|
+
data.tar.gz: d202700416cfc326a4629308efe158a22f86ced2b338cf73992ec4b711991fb7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6e8bc213d1d252c3f1b52af723f4ff49f134d159bc1d48f4e6213e75257596c0426dc7b2e0f319b047436662bd93a71deadc271a31dac91a26fb2e45ec954149
|
|
7
|
+
data.tar.gz: 6ce20cf20608edc2aba0c6145c44cb8ee7cbddc02b39324852f632763b2553fe4d553e9345249fe12917a38b33c91819fe980364222120be1d4b1be9c83daa00
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -254,7 +254,7 @@ First, require the javascript in your application.js:
|
|
|
254
254
|
and add the user permission:
|
|
255
255
|
|
|
256
256
|
```ruby
|
|
257
|
-
can :create,
|
|
257
|
+
can :create, EffectiveLogging.Log
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
then logging an event from JavaScript is almost the same one-liner as from ruby:
|
|
@@ -290,7 +290,7 @@ link_to 'Logs', effective_logging.admin_logs_path # /admin/logs
|
|
|
290
290
|
But you may need to add the permission (using CanCan):
|
|
291
291
|
|
|
292
292
|
```ruby
|
|
293
|
-
can :manage,
|
|
293
|
+
can :manage, EffectiveLoggging.Log
|
|
294
294
|
can :admin, :effective_logging
|
|
295
295
|
```
|
|
296
296
|
|
|
@@ -6,6 +6,9 @@ module Admin
|
|
|
6
6
|
include Effective::CrudController
|
|
7
7
|
skip_log_page_views
|
|
8
8
|
|
|
9
|
+
resource_scope -> { EffectiveLogging.Log.deep.all }
|
|
10
|
+
datatable -> { Admin::EffectiveLogsDatatable.new }
|
|
11
|
+
|
|
9
12
|
if (config = EffectiveLogging.layout)
|
|
10
13
|
layout(config.kind_of?(Hash) ? config[:admin] : config)
|
|
11
14
|
end
|
|
@@ -5,15 +5,17 @@ module Effective
|
|
|
5
5
|
include Effective::CrudController
|
|
6
6
|
skip_log_page_views
|
|
7
7
|
|
|
8
|
+
resource_scope -> { EffectiveLogging.Log.all }
|
|
9
|
+
|
|
8
10
|
if (config = EffectiveLogging.layout)
|
|
9
11
|
layout(config.kind_of?(Hash) ? config[:application] : config)
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
# This is a post from our Javascript
|
|
13
15
|
def create
|
|
14
|
-
EffectiveResources.authorize!(self, :create,
|
|
16
|
+
EffectiveResources.authorize!(self, :create, resource_scope.new)
|
|
15
17
|
|
|
16
|
-
@log =
|
|
18
|
+
@log = resource_scope.new.tap do |log|
|
|
17
19
|
log.message = log_params[:message]
|
|
18
20
|
log.status = EffectiveLogging.statuses.find { |status| status == log_params[:status] } || 'info'
|
|
19
21
|
log.user = EffectiveLogging.current_user || current_user
|
|
@@ -40,12 +42,12 @@ module Effective
|
|
|
40
42
|
|
|
41
43
|
# This is the User index event
|
|
42
44
|
def index
|
|
43
|
-
EffectiveResources.authorize!(self, :index,
|
|
45
|
+
EffectiveResources.authorize!(self, :index, resource_scope.new(user: current_user, user_id: current_user.id))
|
|
44
46
|
@datatable = EffectiveLogsDatatable.new(self, for: current_user.id)
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
def html_part
|
|
48
|
-
@log =
|
|
50
|
+
@log = resource_scope.find(params[:id])
|
|
49
51
|
|
|
50
52
|
EffectiveResources.authorize!(self, :show, @log)
|
|
51
53
|
|
|
@@ -37,7 +37,7 @@ class EffectiveLogChangesDatatable < Effective::Datatable
|
|
|
37
37
|
# A nil attributes[:log_id] means give me all the top level log entries
|
|
38
38
|
# If we set a log_id then it's for sub logs
|
|
39
39
|
collection do
|
|
40
|
-
|
|
40
|
+
EffectiveLogging.Log.logged_changes.deep
|
|
41
41
|
.where(changes_to_type: attributes[:changes_to_type], changes_to_id: attributes[:changes_to_id])
|
|
42
42
|
end
|
|
43
43
|
|
|
@@ -42,7 +42,7 @@ class EffectiveLogsDatatable < Effective::Datatable
|
|
|
42
42
|
# A nil attributes[:log_id] means give me all the top level log entries
|
|
43
43
|
# If we set a log_id then it's for sub logs
|
|
44
44
|
collection do
|
|
45
|
-
scope =
|
|
45
|
+
scope = EffectiveLogging.Log.deep.all
|
|
46
46
|
|
|
47
47
|
# Older syntax, pass by integer
|
|
48
48
|
if attributes[:for]
|
|
@@ -20,7 +20,7 @@ module ActsAsLoggable
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
included do
|
|
23
|
-
has_many :logged_changes, -> { order(:id).where(status: EffectiveLogging.log_changes_status) }, as: :changes_to
|
|
23
|
+
has_many :logged_changes, -> { EffectiveLogging.Log.order(:id).where(status: EffectiveLogging.log_changes_status) }, as: :changes_to
|
|
24
24
|
|
|
25
25
|
log_changes_options = {
|
|
26
26
|
to: @acts_as_loggable_options[:to],
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# EffectiveLoggingLog
|
|
4
|
+
#
|
|
5
|
+
# Mark your log model with effective_logging_log to get all the includes
|
|
6
|
+
|
|
7
|
+
module EffectiveLoggingLog
|
|
8
|
+
extend ActiveSupport::Concern
|
|
9
|
+
|
|
10
|
+
module Base
|
|
11
|
+
def effective_logging_log
|
|
12
|
+
include ::EffectiveLoggingLog
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module ClassMethods
|
|
17
|
+
def effective_logging_log?; true; end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
included do
|
|
21
|
+
self.table_name = (EffectiveLogging.logs_table_name || :logs).to_s
|
|
22
|
+
|
|
23
|
+
belongs_to :user, polymorphic: true, optional: true
|
|
24
|
+
belongs_to :changes_to, polymorphic: true, optional: true # This is the log_changes to: option
|
|
25
|
+
belongs_to :associated, polymorphic: true, optional: true
|
|
26
|
+
|
|
27
|
+
effective_resource do
|
|
28
|
+
status :string
|
|
29
|
+
|
|
30
|
+
changes_to_type :string
|
|
31
|
+
changes_to_id :string
|
|
32
|
+
|
|
33
|
+
associated_type :string
|
|
34
|
+
associated_id :integer
|
|
35
|
+
associated_to_s :string
|
|
36
|
+
|
|
37
|
+
message :text
|
|
38
|
+
details :text
|
|
39
|
+
|
|
40
|
+
timestamps
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
serialize :details, Hash
|
|
44
|
+
|
|
45
|
+
validates :message, presence: true
|
|
46
|
+
validates :status, presence: true
|
|
47
|
+
|
|
48
|
+
validate(if: -> { status.present? }) do
|
|
49
|
+
errors.add(:status, "is not included") unless EffectiveLogging.statuses.include?(status)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
scope :deep, -> { includes(:user, :associated, :changes_to) }
|
|
53
|
+
scope :sorted, -> { order(:id) }
|
|
54
|
+
scope :logged_changes, -> { where(status: EffectiveLogging.log_changes_status) }
|
|
55
|
+
scope :changes, -> { where(status: EffectiveLogging.log_changes_status) }
|
|
56
|
+
|
|
57
|
+
# Dynamically add logging methods based on the defined statuses
|
|
58
|
+
# EffectiveLogging.info 'my message'
|
|
59
|
+
(EffectiveLogging.statuses || []).each do |status|
|
|
60
|
+
send(:define_method, status) { |message, options={}| log(message, status, options) }
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Instance Methods
|
|
66
|
+
def to_s
|
|
67
|
+
"#{model_name.human} ##{id}"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def associated_to_s=(value)
|
|
71
|
+
super(value.to_s[0...255].presence) # Take only first 255 characters
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def log(message, status = nil, options = {})
|
|
75
|
+
status ||= EffectiveLogging.statuses.first
|
|
76
|
+
EffectiveLogger.log(message, status, options)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def details
|
|
80
|
+
self[:details] || {}
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def next_log
|
|
84
|
+
self.class.order(id: :asc).where('id > ?', id).first
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def prev_log
|
|
88
|
+
self.class.order(id: :desc).where('id < ?', id).first
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
data/app/models/effective/log.rb
CHANGED
|
@@ -1,68 +1,7 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
module Effective
|
|
4
2
|
class Log < ActiveRecord::Base
|
|
5
|
-
self.table_name = EffectiveLogging.logs_table_name.to_s
|
|
6
|
-
|
|
7
|
-
belongs_to :user, polymorphic: true, optional: true
|
|
8
|
-
belongs_to :changes_to, polymorphic: true, optional: true # This is the log_changes to: option
|
|
9
|
-
belongs_to :associated, polymorphic: true, optional: true
|
|
10
|
-
|
|
11
|
-
effective_resource do
|
|
12
|
-
status :string
|
|
13
|
-
|
|
14
|
-
changes_to_type :string
|
|
15
|
-
changes_to_id :string
|
|
16
|
-
|
|
17
|
-
associated_type :string
|
|
18
|
-
associated_id :integer
|
|
19
|
-
associated_to_s :string
|
|
20
|
-
|
|
21
|
-
message :text
|
|
22
|
-
details :text
|
|
23
|
-
|
|
24
|
-
timestamps
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
serialize :details, Hash
|
|
28
|
-
|
|
29
|
-
validates :message, presence: true
|
|
30
|
-
validates :status, presence: true, inclusion: { in: EffectiveLogging.statuses }
|
|
31
|
-
|
|
32
|
-
scope :deep, -> { includes(:user, :associated) }
|
|
33
|
-
scope :sorted, -> { order(:id) }
|
|
34
|
-
scope :logged_changes, -> { where(status: EffectiveLogging.log_changes_status) }
|
|
35
|
-
scope :changes, -> { where(status: EffectiveLogging.log_changes_status) }
|
|
36
|
-
|
|
37
|
-
def to_s
|
|
38
|
-
"Log #{id}"
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def associated_to_s=(value)
|
|
42
|
-
super(value.to_s[0...255].presence) # Take only first 255 characters
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def log(message, status = EffectiveLogging.statuses.first, options = {})
|
|
46
|
-
EffectiveLogger.log(message, status, options)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def details
|
|
50
|
-
self[:details] || {}
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def next_log
|
|
54
|
-
Log.order(id: :asc).where('id > ?', id).first
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def prev_log
|
|
58
|
-
Log.order(id: :desc).where('id < ?', id).first
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Dynamically add logging methods based on the defined statuses
|
|
62
|
-
# EffectiveLogging.info 'my message'
|
|
63
|
-
(EffectiveLogging.statuses || []).each do |status|
|
|
64
|
-
send(:define_method, status) { |message, options={}| log(message, status, options) }
|
|
65
|
-
end
|
|
3
|
+
self.table_name = (EffectiveLogging.logs_table_name || :logs).to_s
|
|
66
4
|
|
|
5
|
+
effective_logging_log
|
|
67
6
|
end
|
|
68
7
|
end
|
data/config/effective_logging.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
EffectiveLogging.setup do |config|
|
|
2
|
-
#
|
|
3
|
-
config.
|
|
2
|
+
# Specify Log class
|
|
3
|
+
# config.log_class_name = 'Effective::Log'
|
|
4
4
|
|
|
5
5
|
# Admin Screens Layout Settings
|
|
6
6
|
# config.layout = { application: 'application', admin: 'admin' }
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class CreateEffectiveLogging < ActiveRecord::Migration[6.0]
|
|
2
|
+
def change
|
|
3
|
+
create_table :logs do |t|
|
|
4
|
+
t.string :status
|
|
5
|
+
|
|
6
|
+
t.string :user_type
|
|
7
|
+
t.integer :user_id
|
|
8
|
+
|
|
9
|
+
t.string :changes_to_type
|
|
10
|
+
t.integer :changes_to_id
|
|
11
|
+
|
|
12
|
+
t.string :associated_type
|
|
13
|
+
t.integer :associated_id
|
|
14
|
+
t.string :associated_to_s
|
|
15
|
+
|
|
16
|
+
t.text :message
|
|
17
|
+
t.text :details
|
|
18
|
+
|
|
19
|
+
t.timestamps
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
add_index :logs, :id, order: { id: :desc }
|
|
23
|
+
add_index :logs, :updated_at
|
|
24
|
+
add_index :logs, :user_id
|
|
25
|
+
add_index :logs, :status
|
|
26
|
+
add_index :logs, :associated_to_s
|
|
27
|
+
add_index :logs, [:associated_type, :associated_id]
|
|
28
|
+
add_index :logs, [:changes_to_type, :changes_to_id]
|
|
29
|
+
|
|
30
|
+
enable_extension('pg_trgm')
|
|
31
|
+
add_index :logs, :message, using: :gin, opclass: :gin_trgm_ops
|
|
32
|
+
add_index :logs, :details, using: :gin, opclass: :gin_trgm_ops
|
|
33
|
+
end
|
|
34
|
+
end
|
data/lib/effective_logging.rb
CHANGED
|
@@ -6,12 +6,17 @@ module EffectiveLogging
|
|
|
6
6
|
def self.config_keys
|
|
7
7
|
[
|
|
8
8
|
:logs_table_name, :layout, :additional_statuses,
|
|
9
|
+
:log_class_name,
|
|
9
10
|
:active_storage_enabled, :email_enabled, :sign_in_enabled, :sign_out_enabled
|
|
10
11
|
]
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
include EffectiveGem
|
|
14
15
|
|
|
16
|
+
def self.Log
|
|
17
|
+
log_class_name&.constantize || Effective::Log
|
|
18
|
+
end
|
|
19
|
+
|
|
15
20
|
def self.statuses
|
|
16
21
|
@statuses ||= (
|
|
17
22
|
base = [
|
|
@@ -20,9 +20,7 @@ module EffectiveLogging
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def create_migration_file
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
migration_template ('../' * 3) + 'db/migrate/01_create_effective_logging.rb.erb', 'db/migrate/create_effective_logging.rb'
|
|
23
|
+
migration_template ('../' * 3) + 'db/migrate/101_create_effective_logging.rb', 'db/migrate/create_effective_logging.rb'
|
|
26
24
|
end
|
|
27
25
|
end
|
|
28
26
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: effective_logging
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Code and Effect
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-08-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -80,6 +80,90 @@ dependencies:
|
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: sqlite3
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: devise
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: pry-byebug
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: effective_test_bot
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: effective_developer
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: psych
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - "<"
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '4'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - "<"
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '4'
|
|
83
167
|
description: Automatically log all sent emails, user logins, and page views. This
|
|
84
168
|
also will log custom events from Ruby and JavaScript.
|
|
85
169
|
email:
|
|
@@ -94,10 +178,12 @@ files:
|
|
|
94
178
|
- app/assets/javascripts/effective_logging/effective_logger.js.coffee.erb
|
|
95
179
|
- app/controllers/admin/logs_controller.rb
|
|
96
180
|
- app/controllers/effective/logs_controller.rb
|
|
181
|
+
- app/datatables/admin/effective_logs_datatable.rb
|
|
97
182
|
- app/datatables/effective_log_changes_datatable.rb
|
|
98
183
|
- app/datatables/effective_logs_datatable.rb
|
|
99
184
|
- app/helpers/effective_logging_helper.rb
|
|
100
185
|
- app/models/concerns/acts_as_loggable.rb
|
|
186
|
+
- app/models/concerns/effective_logging_log.rb
|
|
101
187
|
- app/models/effective/log.rb
|
|
102
188
|
- app/models/effective_logger.rb
|
|
103
189
|
- app/views/admin/logs/_layout.html.haml
|
|
@@ -109,7 +195,7 @@ files:
|
|
|
109
195
|
- app/views/effective/logs/show.html.haml
|
|
110
196
|
- config/effective_logging.rb
|
|
111
197
|
- config/routes.rb
|
|
112
|
-
- db/migrate/
|
|
198
|
+
- db/migrate/101_create_effective_logging.rb
|
|
113
199
|
- lib/effective_logging.rb
|
|
114
200
|
- lib/effective_logging/active_record_logger.rb
|
|
115
201
|
- lib/effective_logging/active_storage_logger.rb
|
|
@@ -139,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
139
225
|
- !ruby/object:Gem::Version
|
|
140
226
|
version: '0'
|
|
141
227
|
requirements: []
|
|
142
|
-
rubygems_version: 3.
|
|
228
|
+
rubygems_version: 3.3.7
|
|
143
229
|
signing_key:
|
|
144
230
|
specification_version: 4
|
|
145
231
|
summary: Automatically log all sent emails, user logins, and page views. This also
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
class CreateEffectiveLogging < ActiveRecord::Migration[4.2]
|
|
2
|
-
def self.up
|
|
3
|
-
create_table <%= @logs_table_name %> do |t|
|
|
4
|
-
t.string :status
|
|
5
|
-
|
|
6
|
-
t.string :user_type
|
|
7
|
-
t.integer :user_id
|
|
8
|
-
|
|
9
|
-
t.string :changes_to_type
|
|
10
|
-
t.integer :changes_to_id
|
|
11
|
-
|
|
12
|
-
t.string :associated_type
|
|
13
|
-
t.integer :associated_id
|
|
14
|
-
t.string :associated_to_s
|
|
15
|
-
|
|
16
|
-
t.text :message
|
|
17
|
-
t.text :details
|
|
18
|
-
|
|
19
|
-
t.timestamps
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
add_index <%= @logs_table_name %>, :id, order: { id: :desc }
|
|
23
|
-
add_index <%= @logs_table_name %>, :updated_at
|
|
24
|
-
add_index <%= @logs_table_name %>, :user_id
|
|
25
|
-
add_index <%= @logs_table_name %>, :status
|
|
26
|
-
add_index <%= @logs_table_name %>, :associated_to_s
|
|
27
|
-
add_index <%= @logs_table_name %>, [:associated_type, :associated_id]
|
|
28
|
-
add_index <%= @logs_table_name %>, [:changes_to_type, :changes_to_id]
|
|
29
|
-
|
|
30
|
-
enable_extension('pg_trgm')
|
|
31
|
-
add_index <%= @logs_table_name %>, :message, using: :gin, opclass: :gin_trgm_ops
|
|
32
|
-
add_index <%= @logs_table_name %>, :details, using: :gin, opclass: :gin_trgm_ops
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def self.down
|
|
36
|
-
drop_table <%= @logs_table_name %>
|
|
37
|
-
end
|
|
38
|
-
end
|