magick-feature-flags 0.8.5 → 0.8.7

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: a62d079b6f68d6c2b207fe51bf1698fd7b79eca4e9eecd509b614f4a33ee78f2
4
- data.tar.gz: 7b01eafa0b42fa5555cfa7356bc299a3bb5170a8065714707e68c0d13a8e16a6
3
+ metadata.gz: 2ab8236f8c928279337c89be2c15f6ff413c6f33f3bbd2d2489eb9344d93b546
4
+ data.tar.gz: 14bc44e42dc9429441b504c81fe0b076f947c0638d2e55a590a0743bf75822e8
5
5
  SHA512:
6
- metadata.gz: e93c25f079be5541256bd3c89389a8370edb0c8cd2789e85c2010d9e6f6e8e20b9bb0ca74e87a7c22c4bfb471a53d88cde64ea1570cc06f2439746ee07a0e621
7
- data.tar.gz: 9297dcd89a4bcfb487f1fe550960f1d1984a7a5ac631c80cb0f417a9792dbeffa7b1832b2d02fd0f07408ff9ba8e539f0c1127a6677415f9e81c62957ffd34cd
6
+ metadata.gz: e346d563053b3adb3acc9fed5bcd8b085b064be393a6cc1303435ff592a69f7987261baf9383f82ca5a46667f89de0c0dcecc5d01708fc972616ecd042dc54cc
7
+ data.tar.gz: 8ad9c0b56690511dc1709721248875a474e0ab521dd8d98ce63e80aedbec8e4993eb88be099b01cac82ad41096aba4eae2b40a06bd6840fd15d805f102282585
@@ -325,7 +325,11 @@ module Magick
325
325
  @stored_value = value
326
326
 
327
327
  # Update registered feature instance if it exists
328
- Magick.features[name].instance_variable_set(:@stored_value, value) if Magick.features.key?(name)
328
+ if Magick.features.key?(name)
329
+ registered = Magick.features[name]
330
+ registered.instance_variable_set(:@stored_value, value)
331
+ registered.instance_variable_set(:@targeting, @targeting.dup) if @targeting
332
+ end
329
333
 
330
334
  changes = { value: { from: old_value, to: value } }
331
335
 
@@ -386,6 +390,12 @@ module Magick
386
390
  raise InvalidFeatureValueError, "Cannot disable feature of type #{type}"
387
391
  end
388
392
 
393
+ # Ensure registered feature instance also has targeting cleared
394
+ if Magick.features.key?(name)
395
+ registered = Magick.features[name]
396
+ registered.instance_variable_set(:@targeting, {})
397
+ end
398
+
389
399
  # Cascade disable: disable all features that depend on this one
390
400
  disable_dependent_features(user_id: user_id)
391
401
 
@@ -485,9 +495,9 @@ module Magick
485
495
  if @description && !adapter_registry.get(name, 'description')
486
496
  adapter_registry.set(name, 'description', @description)
487
497
  end
488
- if @display_name && !adapter_registry.get(name, 'display_name')
489
- adapter_registry.set(name, 'display_name', @display_name)
490
- end
498
+ return unless @display_name && !adapter_registry.get(name, 'display_name')
499
+
500
+ adapter_registry.set(name, 'display_name', @display_name)
491
501
  end
492
502
 
493
503
  def load_value_from_adapter
@@ -689,14 +699,28 @@ module Magick
689
699
  # Find all features that depend on this feature
690
700
  dependent_features = find_dependent_features
691
701
 
692
- # Disable each dependent feature
702
+ # Disable each dependent feature by setting value directly (avoid recursion)
693
703
  dependent_features.each do |dep_feature_name|
694
704
  dep_feature = Magick.features[dep_feature_name.to_s] || Magick[dep_feature_name]
695
705
  next unless dep_feature
696
706
 
697
- # Only disable if it's currently enabled (to avoid unnecessary operations)
698
- if dep_feature.enabled?
699
- dep_feature.disable(user_id: user_id)
707
+ # Set value directly to avoid recursive disable calls
708
+ # Clear targeting and set value to false/empty/0 based on type
709
+ dep_feature.instance_variable_set(:@targeting, {})
710
+ dep_feature.save_targeting
711
+
712
+ case dep_feature.type
713
+ when :boolean
714
+ dep_feature.set_value(false, user_id: user_id)
715
+ when :string
716
+ dep_feature.set_value('', user_id: user_id)
717
+ when :number
718
+ dep_feature.set_value(0, user_id: user_id)
719
+ end
720
+
721
+ # Rails 8+ event
722
+ if defined?(Magick::Rails::Events) && Magick::Rails::Events.rails8?
723
+ Magick::Rails::Events.feature_disabled_globally(dep_feature_name, user_id: user_id)
700
724
  end
701
725
  end
702
726
  end
@@ -706,9 +730,7 @@ module Magick
706
730
  dependent_features = []
707
731
  Magick.features.each do |_name, feature|
708
732
  feature_deps = feature.instance_variable_get(:@dependencies) || []
709
- if feature_deps.include?(name.to_s) || feature_deps.include?(name.to_sym)
710
- dependent_features << feature.name
711
- end
733
+ dependent_features << feature.name if feature_deps.include?(name.to_s) || feature_deps.include?(name.to_sym)
712
734
  end
713
735
  dependent_features
714
736
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Magick
4
- VERSION = '0.8.5'
4
+ VERSION = '0.8.7'
5
5
  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.8.5
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lobanov