magick-feature-flags 0.9.7 → 0.9.9

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: 015b9568cac92b03d1776240c7236cb395d15189eb496e03ac803979fef2d77d
4
- data.tar.gz: 3219b3349bb202775c883d7b977ca0dd8d64846625a524abbe858c6d51d9db43
3
+ metadata.gz: 97522d2ffcbf4267b4c5fbb6b8243eef1a91d2e00eee70717d6a5cfd74c6b3f4
4
+ data.tar.gz: 68a31983ffc8b7926c740a6444e4f1d189e7e7eff55a0fbbd175a9c3bee08e0a
5
5
  SHA512:
6
- metadata.gz: d93760f46cd383bc5b97f032a992fe4e0fc6e567d50985ab2544475805ffbb4545b105c8033a7aafb5a48149c1169ab7f87e6e70da58bcbfd2554a1935608bb3
7
- data.tar.gz: 19424a6172af8421a2041a4259f5474a4cffa7cf62cd03582b23f479374b7ca3a9aa56ca57f69e7facae4e372662d70abf80384456247d801ffd6eee141acd56
6
+ metadata.gz: ccf360255814ca54a8d7ab84f13329d74fbdbb5c61b9943053b607fe16107999bcbddf3954c8b4b6b9ec08c0ffcf5aea547132e18969eb1295d67a0e97ce3baf
7
+ data.tar.gz: e31e42e107f303988590f20bd3f3098221ae024a2f2eedefc5ebcf04781e76f845e10d672ab8e086eef91a3d675b6f2c6f21adfa7edb64e2fd7c413ab4b008e3
@@ -92,6 +92,11 @@ module Magick
92
92
  publish_cache_invalidation(feature_name)
93
93
  end
94
94
 
95
+ # Check if Redis adapter is available
96
+ def redis_available?
97
+ !redis_adapter.nil?
98
+ end
99
+
95
100
  private
96
101
 
97
102
  attr_reader :memory_adapter, :redis_adapter, :circuit_breaker
data/lib/magick/config.rb CHANGED
@@ -57,6 +57,7 @@ module Magick
57
57
  @performance_metrics.enable_redis_tracking(enable: false)
58
58
  end
59
59
  # If nil, will be auto-determined in apply! method
60
+ @performance_metrics
60
61
  end
61
62
 
62
63
  def audit_log(enabled: true, adapter: nil)
@@ -93,21 +94,23 @@ module Magick
93
94
  def apply!
94
95
  # Apply configuration to Magick module
95
96
  Magick.adapter_registry = adapter_registry if adapter_registry
96
- Magick.performance_metrics = performance_metrics if performance_metrics
97
- Magick.audit_log = audit_log if audit_log
98
- Magick.versioning = versioning if versioning
99
- Magick.warn_on_deprecated = warn_on_deprecated
100
97
 
101
- # Enable Redis tracking for performance metrics
102
- if Magick.performance_metrics
103
- # If redis_tracking was explicitly set, use that value
98
+ # Apply performance metrics (preserve redis_tracking setting)
99
+ if performance_metrics
100
+ Magick.performance_metrics = performance_metrics
101
+ # Re-apply redis_tracking setting after assignment (in case object was replaced)
104
102
  if defined?(@performance_metrics_redis_tracking) && !@performance_metrics_redis_tracking.nil?
105
103
  Magick.performance_metrics.enable_redis_tracking(enable: @performance_metrics_redis_tracking)
106
104
  # Otherwise, auto-enable if Redis adapter is configured
107
- elsif adapter_registry.is_a?(Adapters::Registry) && adapter_registry.redis_adapter
105
+ # Check Magick.adapter_registry (after it's been set) instead of local instance variable
106
+ elsif Magick.adapter_registry.is_a?(Adapters::Registry) && Magick.adapter_registry.redis_available?
108
107
  Magick.performance_metrics.enable_redis_tracking(enable: true)
109
108
  end
110
109
  end
110
+
111
+ Magick.audit_log = audit_log if audit_log
112
+ Magick.versioning = versioning if versioning
113
+ Magick.warn_on_deprecated = warn_on_deprecated
111
114
  end
112
115
 
113
116
  private
@@ -16,19 +16,24 @@ if defined?(Rails)
16
16
  Object.class_eval { include Magick::DSL } unless Object.included_modules.include?(Magick::DSL)
17
17
  end
18
18
 
19
- initializer 'magick.configure' do |app|
20
- # Configure Magick with Rails-specific settings
21
- Magick.configure do |config|
22
- # Use Redis if available, otherwise fall back to memory
23
- if defined?(Redis)
24
- begin
25
- redis_url = app.config.respond_to?(:redis_url) ? app.config.redis_url : nil
26
- redis_client = redis_url ? ::Redis.new(url: redis_url) : ::Redis.new
27
- memory_adapter = Adapters::Memory.new
28
- redis_adapter = Adapters::Redis.new(redis_client)
29
- config.adapter_registry = Adapters::Registry.new(memory_adapter, redis_adapter)
30
- rescue StandardError => e
31
- Rails.logger&.warn "Magick: Failed to initialize Redis adapter: #{e.message}. Using memory-only adapter."
19
+ initializer 'magick.configure', before: :load_config_initializers do |app|
20
+ # Configure Magick with Rails-specific settings (only if not already configured)
21
+ # This allows user's config/initializers/magick.rb to override these defaults
22
+ unless Magick.adapter_registry
23
+ Magick.configure do |magick|
24
+ # Use Redis if available, otherwise fall back to memory
25
+ if defined?(Redis)
26
+ begin
27
+ redis_url = app.config.respond_to?(:redis_url) ? app.config.redis_url : nil
28
+ redis_client = redis_url ? ::Redis.new(url: redis_url) : ::Redis.new
29
+ memory_adapter = Adapters::Memory.new
30
+ redis_adapter = Adapters::Redis.new(redis_client)
31
+ magick.adapter_registry = Adapters::Registry.new(memory_adapter, redis_adapter)
32
+ # Re-apply Redis tracking if performance metrics exists
33
+ Magick.reapply_redis_tracking! if Magick.performance_metrics
34
+ rescue StandardError => e
35
+ Rails.logger&.warn "Magick: Failed to initialize Redis adapter: #{e.message}. Using memory-only adapter."
36
+ end
32
37
  end
33
38
  end
34
39
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Magick
4
- VERSION = '0.9.7'
4
+ VERSION = '0.9.9'
5
5
  end
data/lib/magick.rb CHANGED
@@ -128,6 +128,14 @@ module Magick
128
128
  @versioning ||= Versioning.new(adapter_registry || default_adapter_registry)
129
129
  end
130
130
 
131
+ # Manually enable Redis tracking for performance metrics
132
+ # Useful if Redis adapter becomes available after initial configuration
133
+ def enable_redis_tracking(enable: true)
134
+ return unless performance_metrics
135
+
136
+ performance_metrics.enable_redis_tracking(enable: enable)
137
+ end
138
+
131
139
  # Get total usage count for a feature (combines memory and Redis counts)
132
140
  def feature_stats(feature_name)
133
141
  return {} unless performance_metrics
@@ -167,8 +175,7 @@ module Magick
167
175
  @performance_metrics&.clear!
168
176
  end
169
177
 
170
- private
171
-
178
+ # Get default adapter registry (public method for use by other classes)
172
179
  def default_adapter_registry
173
180
  @default_adapter_registry ||= begin
174
181
  memory_adapter = Adapters::Memory.new
@@ -180,5 +187,7 @@ module Magick
180
187
  Adapters::Registry.new(memory_adapter, redis_adapter)
181
188
  end
182
189
  end
190
+
191
+ private
183
192
  end
184
193
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magick-feature-flags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lobanov