class Listen::Listener

Public Class Methods

new(*dirs, &block) click to toggle source

Initializes the directories listener.

@param [String] directory the directories to listen to @param [Hash] options the listen options (see Listen::Listener::Options)

@yield [modified, added, removed] the changed files @yieldparam [Array<String>] modified the list of modified files @yieldparam [Array<String>] added the list of added files @yieldparam [Array<String>] removed the list of removed files

rubocop:disable Metrics/MethodLength

# File lib/listen/listener.rb, line 37
def initialize(*dirs, &block)
  options = dirs.last.is_a?(Hash) ? dirs.pop : {}

  @config = Config.new(options)

  eq_config = Event::Queue::Config.new(@config.relative?)
  queue = Event::Queue.new(eq_config)

  silencer = Silencer.new
  rules = @config.silencer_rules
  @silencer_controller = Silencer::Controller.new(silencer, rules)

  @backend = Backend.new(dirs, queue, silencer, @config)

  optimizer_config = QueueOptimizer::Config.new(@backend, silencer)

  pconfig = Event::Config.new(
    self,
    queue,
    QueueOptimizer.new(optimizer_config),
    @backend.min_delay_between_events,
    &block)

  @processor = Event::Loop.new(pconfig)

  initialize_fsm
end

Public Instance Methods

ignore(regexps) click to toggle source
# File lib/listen/listener.rb, line 124
def ignore(regexps)
  @silencer_controller.append_ignores(regexps)
end
ignore!(regexps) click to toggle source
# File lib/listen/listener.rb, line 128
def ignore!(regexps)
  @silencer_controller.replace_with_bang_ignores(regexps)
end
only(regexps) click to toggle source
# File lib/listen/listener.rb, line 132
def only(regexps)
  @silencer_controller.replace_with_only(regexps)
end
pause() click to toggle source

Stops invoking callbacks (messages pile up)

# File lib/listen/listener.rb, line 107
def pause
  transition :paused
end
paused?() click to toggle source
# File lib/listen/listener.rb, line 116
def paused?
  state == :paused
end
processing?() click to toggle source

processing means callbacks are called

# File lib/listen/listener.rb, line 112
def processing?
  state == :processing_events
end
start() click to toggle source

Starts processing events and starts adapters or resumes invoking callbacks if paused

# File lib/listen/listener.rb, line 89
def start
  case state
  when :initializing
    transition :backend_started
    transition :processing_events
  when :paused
    transition :processing_events
  else
    raise ArgumentError, "cannot start from state #{state.inspect}"
  end
end
stop() click to toggle source

Stops both listening for events and processing them

# File lib/listen/listener.rb, line 102
def stop
  transition :stopped
end
stopped?() click to toggle source
# File lib/listen/listener.rb, line 120
def stopped?
  state == :stopped
end