Class: FeatureGate::Manager

Inherits:
Object
  • Object
show all
Defined in:
app/models/feature_gate/manager.rb

Class Method Summary collapse

Class Method Details

.close!(name) ⇒ Object



34
35
36
37
# File 'app/models/feature_gate/manager.rb', line 34

def self.close!(name)
  gated_feature = GatedFeature.find_by_name!(name)
  gated_feature.gate_feature!
end

.closed_gatesObject



21
22
23
# File 'app/models/feature_gate/manager.rb', line 21

def self.closed_gates
  GatedFeature.closed.pluck(:name)
end

.destroy!(name) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'app/models/feature_gate/manager.rb', line 39

def self.destroy!(name)
  gate = GatedFeature.find_by_name!(name)
  if gate.destroyable?
    gate.destroy!
    puts "#{gate.name} destroyed"
  else
    puts "#{gate.name} is currently being used in the codebase, execute `feature_gate_cleaner #{gate.name}` in the terminal to remove all references to #{gate.name}"
  end
end

.gate(name) ⇒ Object



10
11
12
13
14
15
# File 'app/models/feature_gate/manager.rb', line 10

def self.gate(name)
  gated_feature = GatedFeature.where(name: name).first_or_create
  if !gated_feature.gated?
    yield
  end
end

.gate_page(name) ⇒ Object



3
4
5
6
7
8
# File 'app/models/feature_gate/manager.rb', line 3

def self.gate_page(name)
  gated_feature = GatedFeature.where(name: name).first_or_create
  if gated_feature.gated?
    raise ActionController::RoutingError.new('Not Found')
  end
end

.open!(name) ⇒ Object



29
30
31
32
# File 'app/models/feature_gate/manager.rb', line 29

def self.open!(name)
  gated_feature = GatedFeature.find_by_name!(name)
  gated_feature.deploy_feature!
end

.opened_gatesObject



17
18
19
# File 'app/models/feature_gate/manager.rb', line 17

def self.opened_gates
  GatedFeature.opened.pluck(:name)
end

.stale_gatesObject



25
26
27
# File 'app/models/feature_gate/manager.rb', line 25

def self.stale_gates
  GatedFeature.stale.pluck(:name)
end