lograge-action-mailer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 84db2e508897b2ff827e412f14e52e126a9a9440d00df916555c78f0e85cb6c7
4
+ data.tar.gz: 2e098eb9e05416365ffd6687a7dd28567f144b5f3fc6c7c4db60503b946e1208
5
+ SHA512:
6
+ metadata.gz: cbd9db29b08b0f12982790c9b633ffcfa10001052b4a6f1694d5a008f058d03c94dea17ceeb6158fef15abacbdef47d2e183bd10d82d2cbe0377b30843734255
7
+ data.tar.gz: 4400b551e8d71e37988b7d86b5cd937f77c46e9ca90c2ef139360b74f349fa423f5436d9efdc5d5a9a2537c1eef18fb046e7b570f7abf5d7137f7a58cc27c280
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Lograge::ActionMailer
2
+
3
+ You get a single line with all the important information, like this:
4
+ ```log
5
+ "status":"delivered","mailer":"UserMailer","message_id":"61e6b06c20d63_323a76b547849c@application-dev.mail","duration":"855.3ms"
6
+ ```
7
+
8
+ ## Installation
9
+
10
+ In your Gemfile:
11
+
12
+ ```ruby
13
+ gem 'lograge'
14
+ gem 'lograge-action-mailer'
15
+ ```
16
+
17
+ Enable it in an initializer or the relevant environment config:
18
+ ```ruby
19
+ # config/initializers/lograge.rb
20
+ # OR
21
+ # config/environments/production.rb
22
+ Rails.application.configure do
23
+ config.lograge.action_mailer.enabled = true
24
+ end
25
+ ```
26
+ To further clean up your logging, you can also tell Lograge to skip log messages meeting given criteria. You can skip log messages generated from ActionMailer events:
27
+ ```ruby
28
+ Rails.application.configure do
29
+ config.lograge.action_mailer.ignore_events = ["process"]
30
+ end
31
+ ```
32
+ ## License
33
+
34
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/log_subscriber"
4
+
5
+ module Lograge
6
+ module ActionMailer
7
+ class BaseLogSubscriber < ActiveSupport::LogSubscriber
8
+ protected
9
+
10
+ def processing_data(event, data)
11
+ return if event_ignore?(event.name)
12
+
13
+ logger.send(Lograge.log_level, Lograge.formatter.call(data))
14
+ end
15
+
16
+ private
17
+
18
+ def event_ignore?(name)
19
+ !!Array(Lograge::ActionMailer.ignore_events).index(name.split(".").first)
20
+ end
21
+
22
+ def logger
23
+ Lograge::ActionMailer.logger.presence || Lograge.logger.presence || super
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/railtie"
4
+ require "active_support"
5
+ require "active_support/ordered_options"
6
+
7
+ module Lograge
8
+ module ActionMailer
9
+ class Railtie < Rails::Railtie
10
+ config.lograge = ActiveSupport::OrderedOptions.new unless config.respond_to?(:lograge)
11
+ config.lograge.action_mailer = ActiveSupport::OrderedOptions.new
12
+ config.lograge.action_mailer.enabled = false
13
+ config.lograge.action_mailer.ignore_events = []
14
+
15
+ config.after_initialize do |app|
16
+ Lograge::ActionMailer.setup(app) if app.config.lograge.action_mailer.enabled
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lograge
4
+ module ActionMailer
5
+ VERSION = "0.0.1"
6
+ end
7
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "lograge/action_mailer/railtie"
4
+ require "lograge/action_mailer/base_log_subscriber"
5
+ require "lograge/log_subscribers/action_mailer"
6
+
7
+ require "action_mailer/log_subscriber"
8
+
9
+ module Lograge
10
+ module ActionMailer
11
+ class << self
12
+ attr_accessor :logger, :ignore_events
13
+
14
+ def remove_existing_log_subscriptions
15
+ ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
16
+ next unless subscriber.is_a?(::ActionMailer::LogSubscriber)
17
+
18
+ Lograge.unsubscribe(:action_mailer, subscriber)
19
+ end
20
+ end
21
+
22
+ def setup(app)
23
+ Lograge::ActionMailer.remove_existing_log_subscriptions
24
+ Lograge::LogSubscribers::ActionMailer.attach_to :action_mailer
25
+ Lograge::ActionMailer.logger = app.config.lograge.action_mailer.logger
26
+ Lograge::ActionMailer.ignore_events = app.config.lograge.action_mailer.ignore_events
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lograge
4
+ module LogSubscribers
5
+ class ActionMailer < Lograge::ActionMailer::BaseLogSubscriber
6
+ def deliver(event)
7
+ data = {
8
+ status: event.payload[:perform_deliveries] ? :delivered : :skipped,
9
+ mailer: event.payload[:mailer],
10
+ message_id: event.payload[:message_id],
11
+ duration: "#{event.duration.round(1)}ms"
12
+ }.compact
13
+
14
+ processing_data(event, data)
15
+ end
16
+
17
+ def process(event)
18
+ data = {
19
+ status: event.payload[:perform_deliveries] ? :delivered : :skipped,
20
+ mailer: event.payload[:mailer],
21
+ action: event.payload[:action],
22
+ duration: "#{event.duration.round(1)}ms"
23
+ }.compact
24
+
25
+ processing_data(event, data)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ module Lograge
2
+ module ActionMailer
3
+ end
4
+ end
5
+
6
+ require "lograge/action_mailer/version"
7
+ require "lograge/action_mailer"
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lograge-action-mailer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Pervushin Alec
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionmailer
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.1'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7.1'
33
+ - !ruby/object:Gem::Dependency
34
+ name: lograge
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.11'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.11'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 12.3.3
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 12.3.3
61
+ description: Lograge for ActionMailer.
62
+ email:
63
+ - pervushin.oa@gmail.com
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - README.md
69
+ - Rakefile
70
+ - lib/lograge-action-mailer.rb
71
+ - lib/lograge/action_mailer.rb
72
+ - lib/lograge/action_mailer/base_log_subscriber.rb
73
+ - lib/lograge/action_mailer/railtie.rb
74
+ - lib/lograge/action_mailer/version.rb
75
+ - lib/lograge/log_subscribers/action_mailer.rb
76
+ homepage: https://github.com/one0fnine/lograge-action-mailer
77
+ licenses:
78
+ - MIT
79
+ metadata: {}
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 2.5.0
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubygems_version: 3.3.7
96
+ signing_key:
97
+ specification_version: 4
98
+ summary: Lograge for ActionMailer.
99
+ test_files: []