Class: Subflag::Rails::Backends::MemoryProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/subflag/rails/backends/memory_provider.rb

Overview

In-memory provider for testing and development

Flags are stored in a hash and reset when the process restarts. Useful for unit tests and local development without external dependencies.

Examples:

In tests

Subflag::Rails.configure do |config|
  config.backend = :memory
end

# Set flags directly
Subflag::Rails.provider.set(:new_checkout, true)
Subflag::Rails.provider.set(:max_projects, 100)

# Use them
subflag_enabled?(:new_checkout)  # => true

Instance Method Summary collapse

Constructor Details

#initializeMemoryProvider

Returns a new instance of MemoryProvider.



24
25
26
# File 'lib/subflag/rails/backends/memory_provider.rb', line 24

def initialize
  @flags = {}
end

Instance Method Details

#allObject

Get all flags (for debugging)



50
51
52
# File 'lib/subflag/rails/backends/memory_provider.rb', line 50

def all
  @flags.dup
end

#clearObject

Clear all flags



45
46
47
# File 'lib/subflag/rails/backends/memory_provider.rb', line 45

def clear
  @flags.clear
end

#fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



54
55
56
# File 'lib/subflag/rails/backends/memory_provider.rb', line 54

def fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value)
end

#fetch_float_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



70
71
72
# File 'lib/subflag/rails/backends/memory_provider.rb', line 70

def fetch_float_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value)
end

#fetch_integer_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



66
67
68
# File 'lib/subflag/rails/backends/memory_provider.rb', line 66

def fetch_integer_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value)
end

#fetch_number_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



62
63
64
# File 'lib/subflag/rails/backends/memory_provider.rb', line 62

def fetch_number_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value)
end

#fetch_object_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



74
75
76
# File 'lib/subflag/rails/backends/memory_provider.rb', line 74

def fetch_object_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value)
end

#fetch_string_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



58
59
60
# File 'lib/subflag/rails/backends/memory_provider.rb', line 58

def fetch_string_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value)
end

#initObject



32
# File 'lib/subflag/rails/backends/memory_provider.rb', line 32

def init; end

#metadataObject



28
29
30
# File 'lib/subflag/rails/backends/memory_provider.rb', line 28

def 
  OpenFeature::SDK::Provider::ProviderMetadata.new(name: "Subflag Memory Provider")
end

#set(key, value, enabled: true) ⇒ Object

Set a flag value programmatically

Parameters:

  • key (String, Symbol)

    The flag key (underscores converted to dashes)

  • value (Object)

    The flag value

  • enabled (Boolean) (defaults to: true)

    Whether the flag is enabled (default: true)



40
41
42
# File 'lib/subflag/rails/backends/memory_provider.rb', line 40

def set(key, value, enabled: true)
  @flags[normalize_key(key)] = { value: value, enabled: enabled }
end

#shutdownObject



33
# File 'lib/subflag/rails/backends/memory_provider.rb', line 33

def shutdown; end