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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2358954386fe713d2a0ecd983defb8d9490cb0e343c19fb7837984d031a1bd2
4
- data.tar.gz: 7885ea10527db0410b819c16e91b9baf7f503ceb380f69a5098cf948e72536ac
3
+ metadata.gz: b26a8df3ee6ce7ee55d83fc442b93692952e9f5b5d91cd47dbaf0c44ce9fcd0f
4
+ data.tar.gz: e3dbad423f82581ac1051103a82d0ba1eef69418351c7c916ec13375585ae5d4
5
5
  SHA512:
6
- metadata.gz: 32f35f4c25058f116c5503bdd750a198e3ad6e14924d9075882226b15357aa3b6b565ce8b3d6a10bcfcaf3a0d11f09d161186759a107470d66fef8669d64f21d
7
- data.tar.gz: acccf7756be61b8171373dcd9e96087951c41954a67eb69a77ed282204b862298ddc6badb9b98698b11ea28e8defb38b5a784c30bf1bbad050ddb25627771e6e
6
+ metadata.gz: 20defb8b3a5791d1e691f85bc9bd0774b013cbd43bb473b463ab0e03250cb4d5149e27ebb31f2b9f4a5a96440dfc25e13cfe0bfb8e008cc4268732b12df0e4d8
7
+ data.tar.gz: 7f18668828179449c462dd18a23fe60357ef0e314026faaccb6939e3c54f68d7d0b959dea66d2055713fde2e41bf655e2ea920afa5b8bef313050ad3d6b79670
data/CHANGELOG.md CHANGED
@@ -3,3 +3,7 @@
3
3
  ## [0.1.0] - 2025-01-14
4
4
 
5
5
  - Initial release
6
+
7
+ ## [0.1.2] - 2025-01-14
8
+
9
+ - detach, attach, swapが正常に動作していなかったのを修正
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 :action_view
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
- DEFAULT_SUBSCRIBER_OPTIONS = { klass: nil, detachable: false, attachable: false }
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.dup.transform_values { |k| DEFAULT_SUBSCRIBER_OPTIONS.dup.merge(klass: k) }
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
- return unless @config[:subscribers].key?(key)
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
- @config[:subscribers][key] = { klass: klass, detachable: true, attachable: true }
60
+ detach(key, target_klass)
61
+ attach(key, klass)
56
62
  end
57
63
 
58
64
  def detach(key, klass = nil)
59
- return unless @config[:subscribers].key?(key)
65
+ klass ||= DEFAULT_SUBSCRIBERS[key]
66
+ raise KeyError, "Default subscriber not found" unless klass
60
67
 
61
- @config[:subscribers][key][:detachable] = true
62
- @config[:subscribers][key][:klass] = klass if klass
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
- return unless @config[:subscribers].key?(key)
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
- Configuration::DEFAULT_SUBSCRIBERS.each do |key, default_subscriber|
14
- subscribers = AnyLogger.config.subscribers
15
- detachable = subscribers[key][:detachable]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnyLogger
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/any_logger.rb CHANGED
@@ -16,6 +16,6 @@ module AnyLogger
16
16
  end
17
17
 
18
18
  def self.subscribers
19
- config.config[:subscribers]
19
+ config.subscribers
20
20
  end
21
21
  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.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-13 00:00:00.000000000 Z
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