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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 407bbf89a969b1589e0b769323f1a763d5c369084dd5d5118939a99884d0ab9b
4
- data.tar.gz: 291b19cb1f6ce75088e137fad9c822c65c1e5f75bf0d7c6c0c42ef2017d350ef
3
+ metadata.gz: 92b5a4b913e87e53dc5c98b88d86ebaa7ea2d2bdf8434da373846f1c11a77d1f
4
+ data.tar.gz: 39cd2f51130d3bbd1ecc15760d5352c93b5fb2e06622ed1426f366443d157e8f
5
5
  SHA512:
6
- metadata.gz: 7d92b8f1177df7033fdc281d5c3e57949a769e935c73b6341dff61eb2004719bc0bbb0ecbfc90b82304d767dfd96ca3566222c246fe99780e5cc212413b390ff
7
- data.tar.gz: 9f28aaa757a173ba43c91dd5703cda04663f7d9257c245e481474f36cf2aedbd2c68fb054e961e621b17f0a587f09ce69e63181e23f6821a4bfab8bb59645d00
6
+ metadata.gz: 2786314abef311c89157aa037b7275dbea5ab5748d27795191b211dab1200fa6ee26473ade2fba66fc4569f831e49e5fcbae46d162a364434b5fe711e90beb50
7
+ data.tar.gz: a4bc99cd3aac2c007d845ffe92092ef0c64c30cc3d690283834fe44bd294d32bb155813bffe1dfa6deea9bc62019aac26fbbce16fa6974c676f5668315fced54
@@ -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
- # Only disable if it's currently enabled (to avoid unnecessary operations)
677
- if dep_feature.enabled?
678
- dep_feature.disable(user_id: user_id)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Magick
4
- VERSION = '0.8.3'
4
+ VERSION = '0.8.6'
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.3
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lobanov