any_logger 0.1.1 → 0.1.2

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: 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