effective_logging 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a901f93bafa932e05ed2e192421ca7b48934cdb
4
- data.tar.gz: 482d6d0ddbca6c267b3a390a3aa2e0bf0f3c94b8
3
+ metadata.gz: b74a588e1fd04011eea590704282fc85c6ed9e66
4
+ data.tar.gz: cb09f89a809c02770b26b1c6c583e31289358e12
5
5
  SHA512:
6
- metadata.gz: 78219a82840db833a6dd6fd843874a9953637706ed8ac93d7a27e4e2605eaa62bf3cfa291ec65b13c8f8dad58e64817b25e38002898399c6c47b193dae10abfc
7
- data.tar.gz: c87f6ee35dbd6bd1058e24f2db099f75ff0b2cbb626081e1b96f69f8e5e8b94da38054806b7b366f792d8c72f4069184b7757a8ab3367c3dcd6d3a42cad5ddb1
6
+ metadata.gz: c3933d77a4bd9b28d8f8df76df5fbfbc43002d08dfefc140cb606897b6745f81c98adb3e3b483f74ec5dd85aebaba7216ac24480b574ca2309d3d0d1a20143d2
7
+ data.tar.gz: e7e6ea41bd18c639999a2d71cf82a31caf7f2cb7c4931525b200cbf545c04df78f38634c2daa01181cd834c8d16d628997ff71af2322f88d65d59577521c0747
data/README.md CHANGED
@@ -98,6 +98,17 @@ This behaviour can be disabled in the config/initializers/effective_logging.rb i
98
98
 
99
99
  If the TO email address match a User, the :user will be set appropriately.
100
100
 
101
+ You can specify additional fields to be logged via your mailer:
102
+
103
+ ```ruby
104
+ def notify_admin_of_new_post(post)
105
+ mail(
106
+ to: 'admin@example.com',
107
+ subject: 'A new post was created',
108
+ log: { :associated => post, :title => post.title }
109
+ )
110
+ end
111
+ ```
101
112
 
102
113
  ### Automatic Logging of User Login and Logout
103
114
 
@@ -10,47 +10,48 @@ if defined?(EffectiveDatatables)
10
10
  table_column :created_at
11
11
  table_column :id, visible: false
12
12
 
13
- table_column :parent_id, visible: false
14
- table_column :user, :if => proc { attributes[:user_id].blank? }
13
+ unless attributes[:user_id] || attributes[:user] || (attributes[:user] == false)
14
+ table_column :user
15
+ end
15
16
 
16
- table_column :status, filter: { type: :select, values: EffectiveLogging.statuses }
17
+ unless attributes[:status] == false
18
+ table_column :status, filter: { type: :select, values: EffectiveLogging.statuses }
19
+ end
17
20
 
18
- table_column :message, width: '50%', sortable: false
21
+ table_column :message
19
22
  table_column :logs_count, visible: false
20
23
 
21
24
  table_column :details, visible: false, sortable: false do |log|
22
- log.details.delete(:email)
23
- tableize_hash(log.details, th: true, sub_th: false, width: '100%')
25
+ tableize_hash(log.details.except(:email), th: true, sub_th: false, width: '100%')
24
26
  end
25
27
 
26
28
  table_column :updated_at, visible: false
27
29
 
28
- table_column :actions, sortable: false, filter: false do |log|
29
- show_path =
30
- if datatables_active_admin_path?
31
- admin_effective_log_path(log)
32
- elsif datatables_admin_path?
33
- effective_logging.admin_log_path(log)
34
- else
35
- effective_logging.log_path(log)
36
- end
37
-
38
- if log.logs_count.to_i > 0
39
- link_to "View (#{log.logs_count} more)".html_safe, show_path
40
- else
41
- link_to 'View', show_path
42
- end
43
- end
30
+ actions_column partial: 'admin/logs/actions', partial_local: :log
44
31
  end
45
32
 
46
33
  # A nil attributes[:log_id] means give me all the top level log entries
47
34
  # If we set a log_id then it's for sub logs
48
35
  def collection
36
+ collection = Effective::Log.unscoped.where(parent_id: attributes[:log_id]).includes(:user, :associated)
37
+
49
38
  if attributes[:user_id].present?
50
- Effective::Log.unscoped.where(:parent_id => attributes[:log_id]).where(:user_id => attributes[:user_id]).includes(:user)
51
- else
52
- Effective::Log.unscoped.where(:parent_id => attributes[:log_id]).includes(:user)
39
+ collection = collection.where(user_id: attributes[:user_id])
40
+ end
41
+
42
+ if attributes[:user].present?
43
+ collection = collection.where(user: attributes[:user])
53
44
  end
45
+
46
+ if attributes[:associated_id] && attributes[:associated_type]
47
+ collection = collection.where(associated_id: attributes[:associated_id], associated_type: attributes[:associated_type])
48
+ end
49
+
50
+ if attributes[:associated]
51
+ collection = collection.where(associated: attributes[:associated])
52
+ end
53
+
54
+ collection
54
55
  end
55
56
 
56
57
  end
@@ -0,0 +1,14 @@
1
+ :ruby
2
+ show_path =
3
+ if datatables_active_admin_path?
4
+ admin_effective_log_path(log)
5
+ elsif datatables_admin_path?
6
+ effective_logging.admin_log_path(log)
7
+ else
8
+ effective_logging.log_path(log)
9
+ end
10
+
11
+ - if log.logs_count.to_i > 0
12
+ = link_to "View (#{log.logs_count} more)".html_safe, show_path
13
+ - else
14
+ = link_to 'View', show_path
@@ -1,26 +1,28 @@
1
1
  module EffectiveLogging
2
2
  class EmailLogger
3
- def self.delivered_email(message)
3
+ def self.delivering_email(message)
4
4
  return unless message.present?
5
5
 
6
- # Cleanup the Header
7
- message_header = message.header.to_s
8
- message_header.gsub!(";\r\n charset", '; charset')
6
+ # collect a Hash of arguments used to invoke EffectiveLogger.success
7
+ logged_fields = { from: message.from.join(','), to: message.to, subject: message.subject }
9
8
 
10
- # Cleanup the Body
11
- if (message_body = message.body.to_s).include?('<html')
12
- message_body.gsub!(/(\r)*\n\s*/, '')
13
- message_body.gsub!("<!DOCTYPE html>", '')
9
+ # Add a log header to your mailer to pass some objects or additional things to EffectiveLogger
10
+ # mail(to: 'admin@example.com', subject: @post.title, log: { associated: @post })
11
+ if message.header['log'].present?
12
+ # This is a bit sketchy, but gives access to the object in Rails 4.2 anyway
13
+ logged_fields.merge!(message.header['log'].instance_variable_get(:@value) || {})
14
+
15
+ # Get rid of the extra header, as it should not be set in the real mail message.
16
+ message.header['log'] = nil
14
17
  end
15
18
 
16
- (message.to || []).each do |email|
17
- user = User.where(:email => email).first
19
+ logged_fields[:email] = "#{message.header}<hr>#{message.body}"
20
+
21
+ (message.to || []).each do |to|
22
+ logged_fields[:to] = to
23
+ logged_fields[:user] ||= (User.where(email: to).first rescue nil)
18
24
 
19
- if user.present?
20
- EffectiveLogger.success("email sent: #{message.subject}", :user => user, :recipient => email, :subject => message.subject, :email => message_header + '<hr>' + message_body)
21
- else
22
- EffectiveLogger.success("email sent to #{email}: #{message.subject}", :recipient => email, :subject => message.subject, :email => message_header + '<hr>' + message_body)
23
- end
25
+ EffectiveLogger.success("email sent: #{message.subject}", logged_fields)
24
26
  end
25
27
  end
26
28
 
@@ -19,7 +19,7 @@ module EffectiveLogging
19
19
  initializer 'effective_logging.emails' do |app|
20
20
  if EffectiveLogging.emails_enabled == true
21
21
  require 'effective_logging/email_logger'
22
- ActionMailer::Base.register_observer(EffectiveLogging::EmailLogger)
22
+ ActionMailer::Base.register_interceptor(EffectiveLogging::EmailLogger)
23
23
  end
24
24
  end
25
25
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveLogging
2
- VERSION = '1.3.1'.freeze
2
+ VERSION = '1.4.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.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: 2016-02-24 00:00:00.000000000 Z
11
+ date: 2016-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.2.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
26
  version: 3.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: effective_datatables
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.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
40
  version: 2.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: coffee-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: devise
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: haml-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Automatically log all sent emails, user logins, and page views. This
@@ -102,6 +102,7 @@ files:
102
102
  - app/models/effective_logger.rb
103
103
  - app/views/active_admin/effective_logging/logs/index.html.haml
104
104
  - app/views/active_admin/effective_logging/logs/show.html.haml
105
+ - app/views/admin/logs/_actions.html.haml
105
106
  - app/views/admin/logs/index.html.haml
106
107
  - app/views/admin/logs/show.html.haml
107
108
  - app/views/effective/logs/_log.html.haml
@@ -130,17 +131,17 @@ require_paths:
130
131
  - lib
131
132
  required_ruby_version: !ruby/object:Gem::Requirement
132
133
  requirements:
133
- - - '>='
134
+ - - ">="
134
135
  - !ruby/object:Gem::Version
135
136
  version: '0'
136
137
  required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  requirements:
138
- - - '>='
139
+ - - ">="
139
140
  - !ruby/object:Gem::Version
140
141
  version: '0'
141
142
  requirements: []
142
143
  rubyforge_project:
143
- rubygems_version: 2.4.6
144
+ rubygems_version: 2.4.5.1
144
145
  signing_key:
145
146
  specification_version: 4
146
147
  summary: Automatically log all sent emails, user logins, and page views. This also