# File lib/directory_watcher.rb, line 309
  def initialize( directory, opts = {} )
    @dir = directory
    @observer_peers = {}

    if Kernel.test(?e, @dir)
      unless Kernel.test(?d, @dir)
        raise ArgumentError, "'#{@dir}' is not a directory"
      end
    else
      Dir.mkdir @dir
    end

    klass = opts[:scanner].to_s.capitalize + 'Scanner'
    klass = DirectoryWatcher.const_get klass rescue Scanner
    @scanner = klass.new {|events| notify_observers(events)}

    self.glob = opts[:glob] || '*'
    self.interval = opts[:interval] || 30
    self.stable = opts[:stable] || nil
    self.persist = opts[:persist]

    @scanner.reset opts[:pre_load]
  end