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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47d460bf4a24d016000bfaffcaaf5f57a0af0b9152e48d4af3678f0775788039
4
- data.tar.gz: c9fe1129eff787c85eff1ce7305926dde59139a0011a50f7fce4d069fe89d360
3
+ metadata.gz: c89e62bee50614e51b3e844968d557e90217cd48e77bb68ec50c47d48881389b
4
+ data.tar.gz: d39574add8463bb4a927ea94db047d3418317d966b77f400892f67ed6bf4a31c
5
5
  SHA512:
6
- metadata.gz: ba685c76fff52bade17967a0986241d7a4f09b9313ef5e607c3df88f4b2f44be9c02f3ddb852879abf4edf099c631cb4de0187adb4446921b4f178008b819826
7
- data.tar.gz: 7ad42b6a66bf885737b2719840e7e999175143e632bbdcfffd085126b5d85a76534c32dd2743599969a92459a0eebc3ef66818db20c58f172c849b153140eb79
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
@@ -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
- # Check feature dependencies
78
- return false if !dependencies.empty? && !dependencies.all? { |dep_name| Magick.enabled?(dep_name, context) }
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Magick
4
- VERSION = '0.9.4'
4
+ VERSION = '0.9.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.9.4
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lobanov