Sha256: 64d2f52b29bc05f79fa4b3e4f8696e6248e58ede8b6d8562dee4cfc00568c964

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require 'directory_watcher'

module LedgerWeb
  class Watcher
    def self.run!
      directory = LedgerWeb::Config.instance.get :watch_directory
      glob = "*"

      if directory.nil?
        directory = File.dirname(LedgerWeb::Config.instance.get :ledger_file)
        glob = File.basename(LedgerWeb::Config.instance.get :ledger_file)
      end

      @@dw = DirectoryWatcher.new directory, :glob => glob
      @@dw.interval = LedgerWeb::Config.instance.get :watch_interval
      @@dw.stable = LedgerWeb::Config.instance.get :watch_stable_count

      LedgerWeb::Database.connect

      @@dw.add_observer do |*args|
        args.each do |event|
          if event.type == :stable
            puts "Loading database"
            LedgerWeb::Database.run_migrations
            file = LedgerWeb::Database.dump_ledger_to_csv
            count = LedgerWeb::Database.load_database(file)
            puts "Loaded #{count} records"
          end
        end
      end

      @@dw.start

    end

    def self.stop!
      @@dw.stop
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ledger_web-1.5.2 lib/ledger_web/watcher.rb
ledger_web-1.5.1 lib/ledger_web/watcher.rb