Sha256: 2e044581a9759e9ecf90f75ec70c37de64801e76d60b927465d2f0abf34552b7
Contents?: true
Size: 1.7 KB
Versions: 6
Compression:
Stored size: 1.7 KB
Contents
module SecretService module DatabaseStore class ActiveRecordStore TABLE_NAME = '_secret_service_secrets' class Secret < ::ActiveRecord::Base if respond_to? :table_name= self.table_name = TABLE_NAME else set_table_name TABLE_NAME end validates_presence_of :key, :value end def initialize setup_database unless database_set_up? end def find(key) secret_record = find_if_present(key) unless secret_record new_secret = yield begin secret_record = Secret.create!(:key => key, :value => new_secret) rescue ::ActiveRecord::StatementInvalid secret_record = find_if_present(key) end end secret_record.value end def update(key, value) secret_record = find_if_present(key) || Secret.new(:key => key) secret_record.value = value secret_record.save! end def drop_database # tests need this Secret.connection.drop_table TABLE_NAME Secret.reset_column_information rescue ::ActiveRecord::StatementInvalid end private def setup_database Secret.connection.create_table TABLE_NAME do |table| table.string :key table.text :value table.timestamps end Secret.connection.add_index TABLE_NAME, :key, :unique => true rescue ::ActiveRecord::StatementInvalid end def database_set_up? Secret.table_exists? end def find_if_present(key) Secret.first(:conditions => {:key => key}) end end def self.get ActiveRecordStore.new end end end
Version data entries
6 entries across 6 versions & 1 rubygems