Sha256: 55615d0f5c047e51ebda24f49ba298b35ad78c1dc54073b2e1a40448b2b656fd

Contents?: true

Size: 917 Bytes

Versions: 2

Compression:

Stored size: 917 Bytes

Contents

module Systematize
  class Runner

    DB_FOLDER_PATH              = "#{Rack::Directory.new('').root}/db"
    DATA_MIGRATIONS_PATH        = "#{DB_FOLDER_PATH}/data"
    STRUCTURE_MIGRATIONS_PATH   = "#{DB_FOLDER_PATH}/migrate"
    TEMP_MIGRATIONS_FOLDER_PATH = "#{DB_FOLDER_PATH}/tmp"

    def self.run(&block)

      # Create temporary folder where all the migrations will be
      FileUtils.mkdir(TEMP_MIGRATIONS_FOLDER_PATH)

      #copy all the files to a temporary folder
      FileUtils.cp_r(Dir.glob("#{STRUCTURE_MIGRATIONS_PATH}/*.rb"), TEMP_MIGRATIONS_FOLDER_PATH)
      FileUtils.cp_r(Dir.glob("#{DATA_MIGRATIONS_PATH}/*.rb"), TEMP_MIGRATIONS_FOLDER_PATH)

      ActiveRecord::Base.transaction do
        yield(TEMP_MIGRATIONS_FOLDER_PATH)
      end

    rescue Exception => e
      raise e

    ensure
      # Remove the temporary folder
      FileUtils.rm_rf(TEMP_MIGRATIONS_FOLDER_PATH)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
systematize-0.0.2 lib/systematize/runner.rb
systematize-0.0.1 lib/systematize/runner.rb