any_logger 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +5 -3
- data/lib/any_logger/configuration.rb +21 -14
- data/lib/any_logger/initializer.rb +11 -7
- data/lib/any_logger/version.rb +1 -1
- data/lib/any_logger.rb +3 -2
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 334a3aebbaebdfacb7515933cd3bacb1a75e8e06ef8c97610a45bba6456eb84e
|
4
|
+
data.tar.gz: 163ecc53aeca64261a1fb85fc5c43d6056866c66d187b9dadd3f1e928e75304b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 809c03c57003c27026ad6b948f51928bfead45fbfe1d61a7207a587cd0276a7feefd940c4852440703d0bb6ea02eb45af9ce00e0cf89f7c1c5c90fff87918596
|
7
|
+
data.tar.gz: 250cf71e5950b04ac2421d24830d58a4e6ef5df12d7138c0d5eb29295db40b2f83396aa1ca50c50d28861f4439670972aba00665712fcbb0f7c1fecc0bc67218
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
# AnyLogger
|
2
2
|
|
3
|
-
|
3
|
+
A DSL for simplifying modification of Rails LogSubscribers
|
4
4
|
|
5
5
|
### Example
|
6
6
|
|
7
7
|
```ruby
|
8
|
+
# initializer/any_logger.rb
|
9
|
+
require "any_logger"
|
10
|
+
require "any_logger/example/controller_subscriber"
|
11
|
+
|
8
12
|
AnyLogger.configure do |config|
|
9
13
|
config.logger = Rails::Rack::Logger # default: AnyLogger::Example::RackLogger
|
10
14
|
config.swap :action_controller, AnyLogger::Example::ControllerSubscriber
|
11
15
|
config.detach :action_view
|
12
16
|
config.attach :active_record, MyLogger::ModelSubscriber
|
13
17
|
end
|
14
|
-
|
15
|
-
AnyLogger.start
|
16
18
|
```
|
@@ -14,6 +14,12 @@ module AnyLogger
|
|
14
14
|
class Configuration
|
15
15
|
include Singleton
|
16
16
|
|
17
|
+
Subscriber = Struct.new(:subscription, :klass, :detachable, :attachable) do
|
18
|
+
def initialize(subscription, klass, detachable: false, attachable: false)
|
19
|
+
super(subscription, klass, detachable, attachable)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
17
23
|
DEFAULT_SUBSCRIBERS = {
|
18
24
|
action_controller: ActionController::LogSubscriber,
|
19
25
|
active_record: ActiveRecord::LogSubscriber,
|
@@ -24,16 +30,14 @@ module AnyLogger
|
|
24
30
|
active_storage: ActiveStorage::LogSubscriber
|
25
31
|
}
|
26
32
|
|
27
|
-
|
28
|
-
|
29
|
-
private_constant :DEFAULT_SUBSCRIBER_OPTIONS
|
33
|
+
private_constant :DEFAULT_SUBSCRIBERS
|
30
34
|
|
31
35
|
attr_reader :config
|
32
36
|
|
33
37
|
def initialize
|
34
38
|
@config = {
|
35
39
|
logger: ::AnyLogger::Example::RackLogger,
|
36
|
-
subscribers: DEFAULT_SUBSCRIBERS.
|
40
|
+
subscribers: DEFAULT_SUBSCRIBERS.map { |key, klass| Subscriber.new(key, klass) }
|
37
41
|
}
|
38
42
|
end
|
39
43
|
|
@@ -49,24 +53,27 @@ module AnyLogger
|
|
49
53
|
@config[:subscribers]
|
50
54
|
end
|
51
55
|
|
52
|
-
def swap(key, klass)
|
53
|
-
|
56
|
+
def swap(key, klass, target_klass = nil)
|
57
|
+
target_klass ||= DEFAULT_SUBSCRIBERS[key]
|
58
|
+
raise KeyError, "Default subscriber not found" unless target_klass
|
54
59
|
|
55
|
-
|
60
|
+
detach(key, target_klass)
|
61
|
+
attach(key, klass)
|
56
62
|
end
|
57
63
|
|
58
64
|
def detach(key, klass = nil)
|
59
|
-
|
65
|
+
klass ||= DEFAULT_SUBSCRIBERS[key]
|
66
|
+
raise KeyError, "Default subscriber not found" unless klass
|
60
67
|
|
61
|
-
|
62
|
-
|
68
|
+
target_subscriber =
|
69
|
+
@config[:subscribers].find { it.subscription == key && it.klass == klass }
|
70
|
+
|
71
|
+
target_subscriber.detachable = true
|
72
|
+
target_subscriber.attachable = false
|
63
73
|
end
|
64
74
|
|
65
75
|
def attach(key, klass)
|
66
|
-
|
67
|
-
|
68
|
-
@config[:subscribers][key][:attachable] = true
|
69
|
-
@config[:subscribers][key][:klass] = klass
|
76
|
+
@config[:subscribers] << Subscriber.new(key, klass, attachable: true)
|
70
77
|
end
|
71
78
|
end
|
72
79
|
end
|
@@ -10,14 +10,18 @@ module AnyLogger
|
|
10
10
|
end
|
11
11
|
|
12
12
|
private_class_method def self.change_subscribers
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
attachable = subscribers[key][:attachable]
|
17
|
-
|
18
|
-
default_subscriber.detach_from(key) if detachable
|
19
|
-
subscribers[key][:klass].attach_to(key) if attachable
|
13
|
+
AnyLogger.config.subscribers.each do
|
14
|
+
detach_subscriber(it) if it.detachable
|
15
|
+
attach_subscriber(it) if it.attachable
|
20
16
|
end
|
21
17
|
end
|
18
|
+
|
19
|
+
private_class_method def self.detach_subscriber(subscriber)
|
20
|
+
subscriber.klass.detach_from(subscriber.subscription)
|
21
|
+
end
|
22
|
+
|
23
|
+
private_class_method def self.attach_subscriber(subscriber)
|
24
|
+
subscriber.klass.attach_to(subscriber.subscription)
|
25
|
+
end
|
22
26
|
end
|
23
27
|
end
|
data/lib/any_logger/version.rb
CHANGED
data/lib/any_logger.rb
CHANGED
@@ -3,8 +3,9 @@ require_relative "any_logger/configuration"
|
|
3
3
|
require_relative "any_logger/initializer"
|
4
4
|
|
5
5
|
module AnyLogger
|
6
|
-
def self.configure(&block)
|
6
|
+
def self.configure(auto_startable: true, &block)
|
7
7
|
block.call(config)
|
8
|
+
start if auto_startable
|
8
9
|
end
|
9
10
|
|
10
11
|
def self.start
|
@@ -16,6 +17,6 @@ module AnyLogger
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def self.subscribers
|
19
|
-
config.
|
20
|
+
config.subscribers
|
20
21
|
end
|
21
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,28 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: any_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- milkeclair
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-01-
|
10
|
+
date: 2025-01-14 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: actionmailer
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
12
26
|
- !ruby/object:Gem::Dependency
|
13
27
|
name: actionpack
|
14
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,7 +93,7 @@ dependencies:
|
|
79
93
|
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
95
|
version: '0'
|
82
|
-
description:
|
96
|
+
description: A DSL for simplifying modification of Rails LogSubscribers
|
83
97
|
email:
|
84
98
|
- milkeclair.black@gmail.com
|
85
99
|
executables: []
|
@@ -121,5 +135,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
135
|
requirements: []
|
122
136
|
rubygems_version: 3.6.2
|
123
137
|
specification_version: 4
|
124
|
-
summary:
|
138
|
+
summary: A DSL for simplifying modification of Rails LogSubscribers
|
125
139
|
test_files: []
|