Class: CruFlags::FlipperAdapter

Inherits:
Object
  • Object
show all
Includes:
Flipper::Adapter
Defined in:
lib/cru_flags/flipper_adapter.rb

Overview

Read-only Flipper adapter over the client's frozen snapshot (design doc §5). HARD RULE: get/get_multi/get_all build fresh, UNFROZEN top-level hashes on every call — Flipper::Adapters::Memoizable mutates the Hash we return (response.default_proc =, memoizable.rb:103), so a frozen or shared return value would raise FrozenError on every memoized request.

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ FlipperAdapter

Returns a new instance of FlipperAdapter.



14
15
16
# File 'lib/cru_flags/flipper_adapter.rb', line 14

def initialize(client)
  @client = client
end

Instance Method Details

#add(_feature) ⇒ Object



40
# File 'lib/cru_flags/flipper_adapter.rb', line 40

def add(_feature) = write_refused

#clear(_feature) ⇒ Object



44
# File 'lib/cru_flags/flipper_adapter.rb', line 44

def clear(_feature) = write_refused

#disable(_feature, _gate, _thing) ⇒ Object



48
# File 'lib/cru_flags/flipper_adapter.rb', line 48

def disable(_feature, _gate, _thing) = write_refused

#enable(_feature, _gate, _thing) ⇒ Object



46
# File 'lib/cru_flags/flipper_adapter.rb', line 46

def enable(_feature, _gate, _thing) = write_refused

#featuresObject



22
23
24
# File 'lib/cru_flags/flipper_adapter.rb', line 22

def features
  @client.flags_for_adapter.keys.to_set
end

#get(feature) ⇒ Object



26
27
28
# File 'lib/cru_flags/flipper_adapter.rb', line 26

def get(feature)
  gates_for(feature.key)
end

#get_allObject



35
36
37
38
# File 'lib/cru_flags/flipper_adapter.rb', line 35

def get_all
  flags = @client.flags_for_adapter
  flags.keys.to_h { |name| [name, gates_for(name, flags)] }
end

#get_multi(features) ⇒ Object



30
31
32
33
# File 'lib/cru_flags/flipper_adapter.rb', line 30

def get_multi(features)
  flags = @client.flags_for_adapter
  features.to_h { |feature| [feature.key, gates_for(feature.key, flags)] }
end

#nameObject



18
# File 'lib/cru_flags/flipper_adapter.rb', line 18

def name = :cru_flags

#read_only?Boolean

Returns:

  • (Boolean)


20
# File 'lib/cru_flags/flipper_adapter.rb', line 20

def read_only? = true

#remove(_feature) ⇒ Object



42
# File 'lib/cru_flags/flipper_adapter.rb', line 42

def remove(_feature) = write_refused