Module: Feature

Defined in:
lib/toggles/feature.rb,
lib/toggles/feature/subject.rb,
lib/toggles/feature/operation/gt.rb,
lib/toggles/feature/operation/in.rb,
lib/toggles/feature/operation/range.rb

Defined Under Namespace

Modules: Operation, Subject Classes: Attribute, ConstantLookup

Constant Summary collapse

Error =
Class.new(StandardError)
Unknown =
Class.new(Error)

Class Method Summary collapse

Class Method Details

.const_missing(sym) ⇒ Object

Deprecated.

This is an abuse of lazy dispatch that creates cryptic errors



16
17
18
# File 'lib/toggles/feature.rb', line 16

def self.const_missing(sym)
  ConstantLookup.from(features, [:Feature]).const_missing(sym)
end

.disabled?(*sym, **criteria) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/toggles/feature.rb', line 28

def self.disabled?(*sym, **criteria)
  !enabled?(*sym, **criteria)
end

.enabled?(*sym, **criteria) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
# File 'lib/toggles/feature.rb', line 20

def self.enabled?(*sym, **criteria)
  sym
    .inject(features) { |a, e| a.fetch(e) }
    .enabled_for?(criteria)
rescue KeyError
  raise Unknown, sym.inspect
end

.featuresObject



7
8
9
# File 'lib/toggles/feature.rb', line 7

def self.features
  @features ||= {}
end

.operationsObject



11
12
13
# File 'lib/toggles/feature.rb', line 11

def self.operations
  @operations ||= {}
end