effective_logging 3.1.13 → 3.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87ac414e0b9beae468f3c40f13ef35bdbb9ad8150ff4ed1bc375860d8ca50ad3
4
- data.tar.gz: 9d63d60750990e0e35076efdc426c7ae9265419f3a279f46d388f60c3fbf9f4e
3
+ metadata.gz: a23b979f527eb3dd28abf6fc248249ed42ea2c89f37812422a55a6d5e77d28d7
4
+ data.tar.gz: 345eea26ac95e464e3568665ebed017d68dd1d06c62f491e668631d1fdd2c084
5
5
  SHA512:
6
- metadata.gz: d374f3383c45f423ca451015421ebcc2abbe3384176fd996fb70e05007bed61b136c3d1693969402bb8383ea7a2e3b4176cd4d47eae3bda70b3e1de989daa349
7
- data.tar.gz: 943beaaeed181e7bc5c5d51d0b826ff37d0937ee27d669f35ad00e96c7cb4589729338a30a05753af24eae168935a3684bf84d19e053c5ef0277437d27df8eef
6
+ metadata.gz: 22235f3413f24925720a1f58f38f1a3f8c8aabcc728356275da3679773a9cf5fe65a1e7fa8f6c37d55c3dc5938355e0a499783effc274c77dfba8076cda82155
7
+ data.tar.gz: 47162b81ab21ff50f614275a08efc9742e4fe7f63ecdc7d1b4f40c443c1f1b3799ee94b46025e808172148b3e4a901b49175482bfa8a18de60959d5443258801
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActsAsLoggable
2
4
  extend ActiveSupport::Concern
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Effective
2
4
  class Log < ActiveRecord::Base
3
5
  self.table_name = EffectiveLogging.logs_table_name.to_s
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Call EffectiveLog.info or EffectiveLog.success EffectiveLog.error
2
4
 
3
5
  class EffectiveLogger
data/config/routes.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  EffectiveLogging::Engine.routes.draw do
2
4
  scope module: 'effective' do
3
5
  # Create is our javascript POST event for EffectiveLogging from JS side
@@ -3,19 +3,19 @@ module EffectiveLogging
3
3
  def self.delivering_email(message)
4
4
  return if EffectiveLogging.supressed?
5
5
  return unless message.present?
6
+ return unless ActiveRecord::Base.connection.table_exists?(:logs)
6
7
 
7
8
  # collect a Hash of arguments used to invoke EffectiveLogger.success
8
- fields = { from: message.from.join(','), to: message.to, subject: message.subject, cc: message.cc, bcc: message.bcc }
9
+ fields = { from: Array(message.from).join(','), to: message.to, subject: message.subject, cc: message.cc, bcc: message.bcc }
9
10
 
10
11
  # Add a log header to your mailer to pass some objects or additional things to EffectiveLogger
11
12
  # mail(to: 'admin@example.com', subject: @post.title, log: @post)
12
13
  log = if message.header['log'].present?
13
- value = message.header['log'].instance_variable_get(:@unparsed_value)
14
- value ||= message.header['log'].instance_variable_get(:@value)
15
- message.header['log'] = nil
16
- value
14
+ message.header['log'].instance_variable_get(:@unparsed_value) ||
15
+ message.header['log'].instance_variable_get(:@value)
17
16
  end
18
17
 
18
+ # If we have a logged object, associate it
19
19
  if log.present?
20
20
  if log.kind_of?(ActiveRecord::Base)
21
21
  fields.merge!(associated: log)
@@ -26,25 +26,24 @@ module EffectiveLogging
26
26
  end
27
27
  end
28
28
 
29
- # Pass a tenant to your mailer
30
- # mail(to: 'admin@example.com', subject: @post.title, tenant: Tenant.current)
31
- tenant = if message.header['tenant'].present?
32
- value = Array(message.header['tenant']).first.to_s.to_sym # OptionalField, not a String here
33
- message.header['tenant'] = nil
34
- value
29
+ # Read the current app's Tenant if defined
30
+ tenant = if defined?(Tenant)
31
+ Tenant.current || raise("Missing tenant in effective_logging email logger")
35
32
  end
36
33
 
34
+ # Clean up the header
35
+ message.header.fields.delete_if { |field| ['tenant', 'log'].include?(field.name) }
36
+
37
+ # Parse the content for logging
37
38
  parts = (message.body.try(:parts) || []).map { |part| [part, (part.parts if part.respond_to?(:parts))] }.flatten
38
39
  body = parts.find { |part| part.content_type.to_s.downcase.include?('text/html') } || message.body
39
-
40
40
  fields[:email] = "#{message.header}<hr>#{body}"
41
41
 
42
- if tenant.present? && defined?(Tenant)
43
- user_klass = (Tenant.engine_user(tenant) rescue nil)
44
- Tenant.as_if(tenant) { log_email(message, fields, user_klass) }
45
- else
46
- log_email(message, fields, 'User'.safe_constantize)
47
- end
42
+ # Find the user to associate it with
43
+ user_klass = (tenant ? Tenant.engine_user(tenant) : 'User'.safe_constantize)
44
+
45
+ # Log the email
46
+ log_email(message, fields, user_klass)
48
47
 
49
48
  true
50
49
  end
@@ -64,6 +63,8 @@ module EffectiveLogging
64
63
  if tos.blank? && (message.cc.present? || message.bcc.present?)
65
64
  ::EffectiveLogger.email("#{message.subject} - multiple recipients", fields)
66
65
  end
66
+
67
+ true
67
68
  end
68
69
 
69
70
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveLogging
2
- VERSION = '3.1.13'.freeze
2
+ VERSION = '3.2.1'.freeze
3
3
  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: 3.1.13
4
+ version: 3.2.1
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: 2021-11-28 00:00:00.000000000 Z
11
+ date: 2022-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails