class SqlServer
Attributes
address[R]
database[R]
name[R]
password[R]
username[R]
Public Class Methods
new(name, address, database, username, password)
click to toggle source
# File lib/migsql/sqlserver.rb, line 7 def initialize(name, address, database, username, password) @name = name @address = address @database = database @username = username @password = password end
Public Instance Methods
apply_migration(path)
click to toggle source
# File lib/migsql/sqlserver.rb, line 74 def apply_migration(path) client = get_client sql = File.read(path) begin sql = parse_sql(sql) sql.each do |statement| client.execute(statement).each end rescue Exception => e puts "Failed to apply migration from #{path}!".red raise e end end
get_client()
click to toggle source
# File lib/migsql/sqlserver.rb, line 33 def get_client require 'tiny_tds' TinyTds::Client.new( :username => username, :password => password, :host => address, :database => database ) end
get_migration_status()
click to toggle source
# File lib/migsql/sqlserver.rb, line 43 def get_migration_status client = get_client begin results = client.execute('SELECT migration FROM _migration') result = results.each(:first => true)[0]['migration'] result = '0' if result.length == 0 rescue result = '0' end result end
get_sql(name)
click to toggle source
# File lib/migsql/sqlserver.rb, line 17 def get_sql(name) File.read("#{File.dirname(__FILE__)}/../../sql/#{name}.sql") end
parse_sql(sql)
click to toggle source
This method will parse some SSMS stuff, such as GO
# File lib/migsql/sqlserver.rb, line 70 def parse_sql(sql) sql.split(/go\n/i) end
remove_migration()
click to toggle source
# File lib/migsql/sqlserver.rb, line 64 def remove_migration client = get_client client.execute('DROP TABLE _migration') end
set_migration_status(to)
click to toggle source
# File lib/migsql/sqlserver.rb, line 55 def set_migration_status(to) client = get_client sql = [ get_sql('create_migration_table'), "UPDATE _migration SET migration = '#{to}'" ].join(' ') client.execute(sql).each end