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 +4 -4
- data/lib/magick/adapters/registry.rb +5 -0
- data/lib/magick/config.rb +11 -8
- data/lib/magick/rails/railtie.rb +18 -13
- data/lib/magick/version.rb +1 -1
- data/lib/magick.rb +11 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 97522d2ffcbf4267b4c5fbb6b8243eef1a91d2e00eee70717d6a5cfd74c6b3f4
|
|
4
|
+
data.tar.gz: 68a31983ffc8b7926c740a6444e4f1d189e7e7eff55a0fbbd175a9c3bee08e0a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ccf360255814ca54a8d7ab84f13329d74fbdbb5c61b9943053b607fe16107999bcbddf3954c8b4b6b9ec08c0ffcf5aea547132e18969eb1295d67a0e97ce3baf
|
|
7
|
+
data.tar.gz: e31e42e107f303988590f20bd3f3098221ae024a2f2eedefc5ebcf04781e76f845e10d672ab8e086eef91a3d675b6f2c6f21adfa7edb64e2fd7c413ab4b008e3
|
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
|
-
#
|
|
102
|
-
if
|
|
103
|
-
|
|
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
|
-
|
|
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
|
data/lib/magick/rails/railtie.rb
CHANGED
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
data/lib/magick/version.rb
CHANGED
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
|
-
|
|
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
|