class Rock def self.turn_on(flag_name) enable(flag_name, true) end def self.turn_off(flag_name) enable(flag_name, false) end def self.on?(flag_name) result = sql <<-SQL SELECT enabled FROM feature_flags WHERE name = '#{flag_name}'; SQL result&.first&.dig("enabled") || false end def self.off?(flag_name) !on?(flag_name) end def self.delete(flag_name) sql <<-SQL DELETE FROM feature_flags WHERE name = '#{flag_name}'; SQL end def self.delete_all_disabled sql <<-SQL DELETE FROM feature_flags WHERE enabled = false; SQL end private def self.enable(flag_name, enabled) sql <<-SQL INSERT INTO feature_flags (name, enabled, created_at, updated_at) VALUES ('#{flag_name}', #{enabled}, now(), now()) ON CONFLICT (name) DO UPDATE SET enabled = #{enabled}; SQL end def self.sql(query_string) ActiveRecord::Base.connection.execute(query_string) end end