magick-feature-flags 0.9.8 → 0.9.10

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: a7f546b5a885a633524d3b0c405e296621f00eaeabb7b65339160c5aa0911ead
4
- data.tar.gz: 07af571d3fdba904c122c5e8996c58fcaac31d515bd955f57aa640d66373376b
3
+ metadata.gz: 6ff57666debab09c055a1709e27902b4ff03780b62ca97382e3f0df191b4b1ce
4
+ data.tar.gz: 1420d03c05427c4c0ef7f319debb108542b36fa5fccf999ad13e3bd0571c0451
5
5
  SHA512:
6
- metadata.gz: 75608b0d581c01aa0a25a362bb45c6cdcb4e8b3ee0316663d1ec6e521b9af3099192d1e2a38fcc13ead9adb256c1fda09934fef749323fc7e94cbaa7daac7c3f
7
- data.tar.gz: ca5643cbd9bdeffeb8c8e1116b4631c6bedde59c2bd050936a77b6bdece35fc67955608ecccba41a7eaaffe59da769a0b74c59f9cb57372fbd07b281c188b397
6
+ metadata.gz: 2150805b902ed92fc1f033493e47697541078d21fb7d9d1e827ddf8b22d9e17fd58e8e1ed926aa47fecf1662c491d910ecba528a0d1ce8f306b340c9e0b35a16
7
+ data.tar.gz: 21144c7b0ad4c6c23eb379f088898757f438058dc9c2278f3fc30a03e188b03a6b58e9cb4aac8d5e37127523b5bcfc562a00c08079de95da035d10b9afa28ad5
@@ -97,6 +97,13 @@ module Magick
97
97
  !redis_adapter.nil?
98
98
  end
99
99
 
100
+ # Get Redis client (public method for use by other classes)
101
+ def redis_client
102
+ return nil unless redis_adapter
103
+
104
+ redis_adapter.instance_variable_get(:@redis)
105
+ end
106
+
100
107
  private
101
108
 
102
109
  attr_reader :memory_adapter, :redis_adapter, :circuit_breaker
@@ -65,9 +65,7 @@ module Magick
65
65
  should_flush = false
66
66
  @mutex.synchronize do
67
67
  # Flush if we have enough pending updates or enough time has passed
68
- if @pending_updates.size >= @batch_size || (Time.now - @last_flush) >= @flush_interval
69
- should_flush = true
70
- end
68
+ should_flush = true if @pending_updates.size >= @batch_size || (Time.now - @last_flush) >= @flush_interval
71
69
  end
72
70
 
73
71
  flush_to_redis if should_flush
@@ -88,13 +86,13 @@ module Magick
88
86
  # Update Redis in batch
89
87
  begin
90
88
  adapter = Magick.adapter_registry || Magick.default_adapter_registry
91
- if adapter.is_a?(Magick::Adapters::Registry) && adapter.redis_adapter
92
- redis = adapter.redis_adapter.instance_variable_get(:@redis)
89
+ if adapter.is_a?(Magick::Adapters::Registry) && adapter.redis_available?
90
+ redis = adapter.redis_client
93
91
  if redis
94
92
  updates_to_flush.each do |feature_name, count|
95
93
  redis_key = "magick:stats:#{feature_name}"
96
94
  redis.incrby(redis_key, count)
97
- redis.expire(redis_key, 86400 * 7) # Keep stats for 7 days
95
+ redis.expire(redis_key, 86_400 * 7) # Keep stats for 7 days
98
96
  end
99
97
  end
100
98
  end
@@ -130,8 +128,8 @@ module Magick
130
128
  if @redis_enabled
131
129
  begin
132
130
  adapter = Magick.adapter_registry || Magick.default_adapter_registry
133
- if adapter.is_a?(Magick::Adapters::Registry) && adapter.redis_adapter
134
- redis = adapter.redis_adapter.instance_variable_get(:@redis)
131
+ if adapter.is_a?(Magick::Adapters::Registry) && adapter.redis_available?
132
+ redis = adapter.redis_client
135
133
  if redis
136
134
  redis_key = "magick:stats:#{feature_name_str}"
137
135
  redis_count = redis.get(redis_key).to_i
@@ -152,11 +150,11 @@ module Magick
152
150
  if @redis_enabled
153
151
  begin
154
152
  adapter = Magick.adapter_registry || Magick.default_adapter_registry
155
- if adapter.is_a?(Magick::Adapters::Registry) && adapter.redis_adapter
156
- redis = adapter.redis_adapter.instance_variable_get(:@redis)
153
+ if adapter.is_a?(Magick::Adapters::Registry) && adapter.redis_available?
154
+ redis = adapter.redis_client
157
155
  if redis
158
156
  # Get all stats keys
159
- redis.keys("magick:stats:*").each do |key|
157
+ redis.keys('magick:stats:*').each do |key|
160
158
  feature_name = key.to_s.sub('magick:stats:', '')
161
159
  redis_count = redis.get(key).to_i
162
160
  combined_counts[feature_name] = (combined_counts[feature_name] || 0) + redis_count
@@ -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.8'
4
+ VERSION = '0.9.10'
5
5
  end
data/lib/magick.rb CHANGED
@@ -175,8 +175,7 @@ module Magick
175
175
  @performance_metrics&.clear!
176
176
  end
177
177
 
178
- private
179
-
178
+ # Get default adapter registry (public method for use by other classes)
180
179
  def default_adapter_registry
181
180
  @default_adapter_registry ||= begin
182
181
  memory_adapter = Adapters::Memory.new
@@ -188,5 +187,7 @@ module Magick
188
187
  Adapters::Registry.new(memory_adapter, redis_adapter)
189
188
  end
190
189
  end
190
+
191
+ private
191
192
  end
192
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.8
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lobanov