Sha256: d15e538799c66e37b5a4dea00766f40946db8820d908b6c43a85335b488103b3

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require "database_stalker/version"
require "database_stalker/parser"

module DatabaseStalker

  DEFAULT_LOG_FILE = 'log/test.log'
  DEFAULT_TABLE_LOG_FILE = 'log/table_names.log'

  class  << self

    def start(log_file: DEFAULT_LOG_FILE, table_log_file: DEFAULT_TABLE_LOG_FILE)
      clean_up_file(log_file) if File.exist?(log_file)
      Process.fork do
        watch_test_process
        save_stalked_tables(log_file, table_log_file)
      end
    end

    def read_table_names(table_log_file: DEFAULT_TABLE_LOG_FILE)
      return [] if not File.exist?(table_log_file)
      result = []
      File.open(table_log_file, 'r') do |f|
        f.each_line do |line|
          result << line.strip
        end
      end
      result
    end

    def clean_up_file(file)
      File.open(file,'w'){ |f| f = nil }
    end

    def save_stalked_tables(log_file, table_log_file)
      File.open(table_log_file, 'w') do |f|
        if File.exist?(log_file)
          parser = Parser.new(log_file)
          parser.table_names.each { |table| f.puts table }
        else
          f = nil
        end
      end
    end

    def watch_test_process
      while true
        return if Process.ppid == 1
      end
    end
  end

  private_class_method :save_stalked_tables, :watch_test_process, :clean_up_file
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
database_stalker-0.1.2 lib/database_stalker.rb