magick-feature-flags 0.8.3 → 0.8.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/feature.rb +39 -4
- 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: 92b5a4b913e87e53dc5c98b88d86ebaa7ea2d2bdf8434da373846f1c11a77d1f
|
|
4
|
+
data.tar.gz: 39cd2f51130d3bbd1ecc15760d5352c93b5fb2e06622ed1426f366443d157e8f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2786314abef311c89157aa037b7275dbea5ab5748d27795191b211dab1200fa6ee26473ade2fba66fc4569f831e49e5fcbae46d162a364434b5fe711e90beb50
|
|
7
|
+
data.tar.gz: a4bc99cd3aac2c007d845ffe92092ef0c64c30cc3d690283834fe44bd294d32bb155813bffe1dfa6deea9bc62019aac26fbbce16fa6974c676f5668315fced54
|
data/lib/magick/feature.rb
CHANGED
|
@@ -24,6 +24,8 @@ module Magick
|
|
|
24
24
|
validate_type!
|
|
25
25
|
validate_default_value!
|
|
26
26
|
load_from_adapter
|
|
27
|
+
# Save description and display_name to adapter if they were provided and not already in adapter
|
|
28
|
+
save_metadata_if_new
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def enabled?(context = {})
|
|
@@ -420,6 +422,7 @@ module Magick
|
|
|
420
422
|
registered = Magick.features[name]
|
|
421
423
|
registered.instance_variable_set(:@stored_value, @stored_value)
|
|
422
424
|
registered.instance_variable_set(:@status, @status)
|
|
425
|
+
registered.instance_variable_set(:@description, @description)
|
|
423
426
|
registered.instance_variable_set(:@display_name, @display_name)
|
|
424
427
|
registered.instance_variable_set(:@targeting, @targeting.dup)
|
|
425
428
|
end
|
|
@@ -455,8 +458,15 @@ module Magick
|
|
|
455
458
|
@stored_value = load_value_from_adapter
|
|
456
459
|
status_value = adapter_registry.get(name, 'status')
|
|
457
460
|
@status = status_value ? status_value.to_sym : status
|
|
461
|
+
|
|
462
|
+
# Load description from adapter (override initial value if present in adapter)
|
|
463
|
+
description_value = adapter_registry.get(name, 'description')
|
|
464
|
+
@description = description_value if description_value
|
|
465
|
+
|
|
466
|
+
# Load display_name from adapter (override initial value if present in adapter)
|
|
458
467
|
display_name_value = adapter_registry.get(name, 'display_name')
|
|
459
468
|
@display_name = display_name_value if display_name_value
|
|
469
|
+
|
|
460
470
|
targeting_value = adapter_registry.get(name, 'targeting')
|
|
461
471
|
if targeting_value.is_a?(Hash)
|
|
462
472
|
# Normalize keys to symbols and handle nested structures
|
|
@@ -469,6 +479,17 @@ module Magick
|
|
|
469
479
|
end
|
|
470
480
|
end
|
|
471
481
|
|
|
482
|
+
def save_metadata_if_new
|
|
483
|
+
# Save description and display_name to adapter if they were provided in options
|
|
484
|
+
# but don't exist in adapter yet (to avoid overwriting existing values)
|
|
485
|
+
if @description && !adapter_registry.get(name, 'description')
|
|
486
|
+
adapter_registry.set(name, 'description', @description)
|
|
487
|
+
end
|
|
488
|
+
if @display_name && !adapter_registry.get(name, 'display_name')
|
|
489
|
+
adapter_registry.set(name, 'display_name', @display_name)
|
|
490
|
+
end
|
|
491
|
+
end
|
|
492
|
+
|
|
472
493
|
def load_value_from_adapter
|
|
473
494
|
value = adapter_registry.get(name, 'value')
|
|
474
495
|
return nil if value.nil?
|
|
@@ -668,14 +689,28 @@ module Magick
|
|
|
668
689
|
# Find all features that depend on this feature
|
|
669
690
|
dependent_features = find_dependent_features
|
|
670
691
|
|
|
671
|
-
# Disable each dependent feature
|
|
692
|
+
# Disable each dependent feature by setting value directly (avoid recursion)
|
|
672
693
|
dependent_features.each do |dep_feature_name|
|
|
673
694
|
dep_feature = Magick.features[dep_feature_name.to_s] || Magick[dep_feature_name]
|
|
674
695
|
next unless dep_feature
|
|
675
696
|
|
|
676
|
-
#
|
|
677
|
-
|
|
678
|
-
|
|
697
|
+
# Set value directly to avoid recursive disable calls
|
|
698
|
+
# Clear targeting and set value to false/empty/0 based on type
|
|
699
|
+
dep_feature.instance_variable_set(:@targeting, {})
|
|
700
|
+
dep_feature.save_targeting
|
|
701
|
+
|
|
702
|
+
case dep_feature.type
|
|
703
|
+
when :boolean
|
|
704
|
+
dep_feature.set_value(false, user_id: user_id)
|
|
705
|
+
when :string
|
|
706
|
+
dep_feature.set_value('', user_id: user_id)
|
|
707
|
+
when :number
|
|
708
|
+
dep_feature.set_value(0, user_id: user_id)
|
|
709
|
+
end
|
|
710
|
+
|
|
711
|
+
# Rails 8+ event
|
|
712
|
+
if defined?(Magick::Rails::Events) && Magick::Rails::Events.rails8?
|
|
713
|
+
Magick::Rails::Events.feature_disabled_globally(dep_feature_name, user_id: user_id)
|
|
679
714
|
end
|
|
680
715
|
end
|
|
681
716
|
end
|
data/lib/magick/version.rb
CHANGED