any_logger 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +4 -1
- 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 +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b26a8df3ee6ce7ee55d83fc442b93692952e9f5b5d91cd47dbaf0c44ce9fcd0f
|
4
|
+
data.tar.gz: e3dbad423f82581ac1051103a82d0ba1eef69418351c7c916ec13375585ae5d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20defb8b3a5791d1e691f85bc9bd0774b013cbd43bb473b463ab0e03250cb4d5149e27ebb31f2b9f4a5a96440dfc25e13cfe0bfb8e008cc4268732b12df0e4d8
|
7
|
+
data.tar.gz: 7f18668828179449c462dd18a23fe60357ef0e314026faaccb6939e3c54f68d7d0b959dea66d2055713fde2e41bf655e2ea920afa5b8bef313050ad3d6b79670
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -5,10 +5,13 @@ Easier to change LogSubscribers in rails.
|
|
5
5
|
### Example
|
6
6
|
|
7
7
|
```ruby
|
8
|
+
require "any_logger"
|
9
|
+
require "any_logger/example/controller_subscriber"
|
10
|
+
|
8
11
|
AnyLogger.configure do |config|
|
9
12
|
config.logger = Rails::Rack::Logger # default: AnyLogger::Example::RackLogger
|
10
13
|
config.swap :action_controller, AnyLogger::Example::ControllerSubscriber
|
11
|
-
config.detach :
|
14
|
+
config.detach :active_record
|
12
15
|
config.attach :active_record, MyLogger::ModelSubscriber
|
13
16
|
end
|
14
17
|
|
@@ -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
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.2
|
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
|