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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2358954386fe713d2a0ecd983defb8d9490cb0e343c19fb7837984d031a1bd2
4
- data.tar.gz: 7885ea10527db0410b819c16e91b9baf7f503ceb380f69a5098cf948e72536ac
3
+ metadata.gz: 334a3aebbaebdfacb7515933cd3bacb1a75e8e06ef8c97610a45bba6456eb84e
4
+ data.tar.gz: 163ecc53aeca64261a1fb85fc5c43d6056866c66d187b9dadd3f1e928e75304b
5
5
  SHA512:
6
- metadata.gz: 32f35f4c25058f116c5503bdd750a198e3ad6e14924d9075882226b15357aa3b6b565ce8b3d6a10bcfcaf3a0d11f09d161186759a107470d66fef8669d64f21d
7
- data.tar.gz: acccf7756be61b8171373dcd9e96087951c41954a67eb69a77ed282204b862298ddc6badb9b98698b11ea28e8defb38b5a784c30bf1bbad050ddb25627771e6e
6
+ metadata.gz: 809c03c57003c27026ad6b948f51928bfead45fbfe1d61a7207a587cd0276a7feefd940c4852440703d0bb6ea02eb45af9ce00e0cf89f7c1c5c90fff87918596
7
+ data.tar.gz: 250cf71e5950b04ac2421d24830d58a4e6ef5df12d7138c0d5eb29295db40b2f83396aa1ca50c50d28861f4439670972aba00665712fcbb0f7c1fecc0bc67218
data/CHANGELOG.md CHANGED
@@ -3,3 +3,11 @@
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が正常に動作していなかったのを修正
10
+
11
+ ## [0.1.3] - 2025-01-15
12
+
13
+ - AnyLogger.startをデフォルトで不要に変更
data/README.md CHANGED
@@ -1,16 +1,18 @@
1
1
  # AnyLogger
2
2
 
3
- Easier to change LogSubscribers in rails.
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
- 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.3"
5
5
  end
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.config[:subscribers]
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.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-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
@@ -79,7 +93,7 @@ dependencies:
79
93
  - - ">="
80
94
  - !ruby/object:Gem::Version
81
95
  version: '0'
82
- description: easy swap for LogSubscribers in rails
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: easy swap for LogSubscribers in rails
138
+ summary: A DSL for simplifying modification of Rails LogSubscribers
125
139
  test_files: []