magick-feature-flags 0.9.4 → 0.9.6
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 +6 -0
- data/lib/magick/feature.rb +14 -2
- data/lib/magick/version.rb +1 -1
- 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: c89e62bee50614e51b3e844968d557e90217cd48e77bb68ec50c47d48881389b
|
|
4
|
+
data.tar.gz: d39574add8463bb4a927ea94db047d3418317d966b77f400892f67ed6bf4a31c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 133bbce3e15f14c39181eaf2078e0bec80fcc2aa295d85397bcb78f95400637e046dd9749f5c8ed65291f2c2e8b562ac8ced6b3df39dd3d625536a58851cefbb
|
|
7
|
+
data.tar.gz: 3a8578be1de567da37d0393e07302934176100bed9d9239bad978c757ed65a6f58770cc3a9b6b6fb5d73fd2393007053bc43c32b466b9bd167e97d5e775c6be0
|
|
@@ -86,6 +86,12 @@ module Magick
|
|
|
86
86
|
(memory_features + redis_features).uniq
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
+
# Explicitly trigger cache invalidation for a feature
|
|
90
|
+
# This is useful for targeting updates that need immediate cache invalidation
|
|
91
|
+
def invalidate_cache(feature_name)
|
|
92
|
+
publish_cache_invalidation(feature_name)
|
|
93
|
+
end
|
|
94
|
+
|
|
89
95
|
private
|
|
90
96
|
|
|
91
97
|
attr_reader :memory_adapter, :redis_adapter, :circuit_breaker
|
data/lib/magick/feature.rb
CHANGED
|
@@ -74,8 +74,10 @@ module Magick
|
|
|
74
74
|
return false if status == :inactive
|
|
75
75
|
return false if status == :deprecated && !context[:allow_deprecated]
|
|
76
76
|
|
|
77
|
-
#
|
|
78
|
-
|
|
77
|
+
# NOTE: We don't check dependencies here because:
|
|
78
|
+
# - Main features can be enabled independently
|
|
79
|
+
# - Dependencies are only prevented from being enabled if the main feature is disabled
|
|
80
|
+
# - The dependency check is handled in the enable() method, not in enabled?()
|
|
79
81
|
|
|
80
82
|
# Check date/time range targeting
|
|
81
83
|
return false if targeting[:date_range] && !date_range_active?(targeting[:date_range])
|
|
@@ -461,6 +463,7 @@ module Magick
|
|
|
461
463
|
def delete
|
|
462
464
|
adapter_registry.delete(name)
|
|
463
465
|
@stored_value = nil
|
|
466
|
+
@stored_value_initialized = false # Reset initialization flag so get_value returns default_value
|
|
464
467
|
@targeting = {}
|
|
465
468
|
# Also remove from Magick.features if registered
|
|
466
469
|
Magick.features.delete(name.to_s)
|
|
@@ -820,11 +823,20 @@ module Magick
|
|
|
820
823
|
end
|
|
821
824
|
|
|
822
825
|
def save_targeting
|
|
826
|
+
# Save targeting to adapter (this triggers cache invalidation via Pub/Sub)
|
|
823
827
|
adapter_registry.set(name, 'targeting', targeting)
|
|
828
|
+
|
|
824
829
|
# Update the feature in Magick.features if it's registered
|
|
825
830
|
return unless Magick.features.key?(name)
|
|
826
831
|
|
|
827
832
|
Magick.features[name].instance_variable_set(:@targeting, targeting.dup)
|
|
833
|
+
|
|
834
|
+
# Explicitly trigger cache invalidation for targeting updates
|
|
835
|
+
# Targeting changes affect enabled? checks, so we need immediate cache invalidation
|
|
836
|
+
# even if async updates are enabled
|
|
837
|
+
return unless adapter_registry.respond_to?(:invalidate_cache)
|
|
838
|
+
|
|
839
|
+
adapter_registry.invalidate_cache(name)
|
|
828
840
|
end
|
|
829
841
|
|
|
830
842
|
def default_for_type
|
data/lib/magick/version.rb
CHANGED