Module: Flag

Defined in:
lib/flag.rb

Defined Under Namespace

Classes: Feature, Members

Constant Summary collapse

FEATURES =
"_flag:features".freeze
RedisGoneError =
StandardError

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.quietObject

Returns the value of attribute quiet.



131
132
133
# File 'lib/flag.rb', line 131

def quiet
  @quiet
end

.storeObject

Returns the value of attribute store.



131
132
133
# File 'lib/flag.rb', line 131

def store
  @store
end

Class Method Details

.enabledObject



139
140
141
# File 'lib/flag.rb', line 139

def enabled
  features.select { |k, v| v.on? }.keys
end

.executeObject



151
152
153
154
155
# File 'lib/flag.rb', line 151

def execute
  yield(store)
rescue Errno::ECONNREFUSED, Errno::EINVAL => e
  raise RedisGoneError unless quiet?
end

.featuresObject



171
172
173
174
175
176
177
178
179
# File 'lib/flag.rb', line 171

def features
  @_features ||= Hash.new { |h, k| h[k] = Feature.new(k) }

  self.execute do |store|
    store.call("HKEYS", FEATURES).each { |k| @_features[k.to_sym] }
  end

  @_features
end

.flushObject



133
134
135
136
137
# File 'lib/flag.rb', line 133

def flush
  @_group = nil
  features.each { |_, f| f.reset }
  self.execute { |store| store.call("DEL", FEATURES) }
end

.groupObject



161
162
163
164
165
# File 'lib/flag.rb', line 161

def group
  @_group ||= Hash.new do |h, k|
    h[k] = lambda { |id| }
  end
end

.groupsObject



167
168
169
# File 'lib/flag.rb', line 167

def groups
  group.keys
end

.quiet!Object



143
144
145
# File 'lib/flag.rb', line 143

def quiet!
  @quiet = true
end

.quiet?Boolean

Returns:

  • (Boolean)


147
148
149
# File 'lib/flag.rb', line 147

def quiet?
  @quiet == true
end