Sha256: deec4dc6dafcc64b1e680472b58b73ef222a2fabba07a3ee858c0f483b56a1ef
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 KB
Contents
# # Copyright (c) 2011, SoundCloud Ltd., Rany Keddo, Tobias Bielohlawek, Tobias # Schmidt # # Apply a change to the database. # module Lhm module Command def self.included(base) base.send :attr_reader, :connection end # # Command Interface # def validate; end def revert; end def run(&block) validate if(block_given?) before block.call(self) after else execute end end private def execute raise NotImplementedError.new(self.class.name) end def before raise NotImplementedError.new(self.class.name) end def after raise NotImplementedError.new(self.class.name) end def table?(table_name) @connection.table_exists?(table_name) end def error(msg) raise Exception.new("#{ self.class }: #{ msg }") end def sql(statements) [statements].flatten.each { |statement| @connection.execute(statement) } rescue ActiveRecord::StatementInvalid, Mysql::Error => e revert error e.message end def update(statements) [statements].flatten.inject(0) do |memo, statement| memo += @connection.update(statement) end rescue ActiveRecord::StatementInvalid, Mysql::Error => e revert error e.message end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lhm-1.0.0.rc2 | lib/lhm/command.rb |