class RolloutPostgresStore

Constants

VERSION

Public Class Methods

new(model, attribute) click to toggle source
# File lib/rollout_postgres_store.rb, line 2
def initialize(model, attribute)
  @model = model
  @attribute = attribute
end

Public Instance Methods

del(key) click to toggle source
# File lib/rollout_postgres_store.rb, line 23
def del(key)
  if flag = @model.where("#{@attribute} ? '#{key}'").first
    flag.delete
  end
end
get(key) click to toggle source
# File lib/rollout_postgres_store.rb, line 7
def get(key)
  if flag = @model.where("#{@attribute} ? '#{key}'").first
    flag.send(@attribute)[key]
  end
end
set(key, value) click to toggle source
# File lib/rollout_postgres_store.rb, line 13
def set(key, value)
  current = get(key)

  if current.nil?
    create_feature_flag(key, value)
  else
    update_flag(key, value)
  end
end

Private Instance Methods

create_feature_flag(key, value) click to toggle source
# File lib/rollout_postgres_store.rb, line 30
def create_feature_flag(key, value)
  flag = @model.new
  flag.send("#{@attribute}=", { key => value })
  flag.save
end
update_flag(key, value) click to toggle source
# File lib/rollout_postgres_store.rb, line 36
def update_flag(key, value)
  flag = @model.where("#{@attribute} ? '#{key}'").first
  flag.send(@attribute)[key] = value
  flag.send("#{@attribute}_will_change!")
  flag.save
end