class Albacore::Sql::SqlTask

a task that handles the execution of sql scripts.

Public Class Methods

new(work_dir, opts) click to toggle source
# File lib/albacore/task_types/sql_cmd.rb, line 95
def initialize work_dir, opts
  raise ArgumentError, 'opts is not a map' unless opts.is_a? Map
  raise ArgumentError, 'no scripts given' unless opts.get(:scripts).length > 0
  raise ArgumentError, 'no parameters given' unless opts.get(:parameters).length > 0

  @opts = opts.apply :work_dir => work_dir
  @scripts = opts.get :scripts
end

Public Instance Methods

execute() click to toggle source
# File lib/albacore/task_types/sql_cmd.rb, line 104
def execute
  @scripts.each do |s|
    execute_inner! @opts.get(:work_dir), s
  end
end
execute_inner!(work_dir, script) click to toggle source

execute, for each sql script

# File lib/albacore/task_types/sql_cmd.rb, line 111
def execute_inner! work_dir, script

  exe = path_to(@opts.get(:exe), work_dir)
  parameters = @opts.get(:parameters)
  parameters.add("-i#{script.gsub('/','\\')}")
  
  cmd = Albacore::Sql::Cmd.new(work_dir, exe, parameters)

  cmd.execute

  fail "SqlCmd.exe is not installed.\nPlease download and install Microsoft SQL Server 2012 Command Line Utilities: https://www.microsoft.com/en-gb/download/confirmation.aspx?id=29065\nAnd add the location of SqlCmd.exe to the PATH system varible." unless exe

end
path_to(path, work_dir) click to toggle source
# File lib/albacore/task_types/sql_cmd.rb, line 125
def path_to path, work_dir
  if (Pathname.new path).absolute?
     return path
  else
     return File.expand_path( File.join(@opts.get(:original_path), path), work_dir )
  end
end