module Listen

def adapter_warn(message)

def adapter_warn(message)
  case ENV['LISTEN_GEM_ADAPTER_WARN_BEHAVIOR']&.to_sym || adapter_warn_behavior_callback(message)
  when :log
    logger.warn(message)
  when :silent, nil, false
    # do nothing
  else # :warn
    warn(message)
  end
end

def adapter_warn_behavior_callback(message)

def adapter_warn_behavior_callback(message)
  if adapter_warn_behavior.respond_to?(:call)
    case behavior = adapter_warn_behavior.call(message)
    when Symbol
      behavior
    when false, nil
      :silent
    else
      :warn
    end
  else
    adapter_warn_behavior
  end
end

def default_logger

def default_logger
  level =
    case ENV['LISTEN_GEM_DEBUGGING'].to_s
    when /debug|2/i
      ::Logger::DEBUG
    when /info|true|yes|1/i
      ::Logger::INFO
    when /warn/i
      ::Logger::WARN
    when /fatal/i
      ::Logger::FATAL
    else
      ::Logger::ERROR
    end
  ::Logger.new(STDERR, level: level)
end

def logger

def logger
  @logger ||= default_logger
end

def stop


This is used by the `listen` binary to handle Ctrl-C
def stop
  while (listener = @listeners.deq(true))
    begin
      listener.stop
    rescue WeakRef::RefError
    end
  end
rescue ThreadError
end

def to(*args, &block)

Returns:
  • (Listen::Listener) - the listener

Other tags:
    Yieldparam: removed - the list of removed files
    Yieldparam: added - the list of added files
    Yieldparam: modified - the list of modified files

Other tags:
    Yield: - the changed files

Parameters:
  • () --
def to(*args, &block)
  Listener.new(*args, &block).tap do |listener|
    @listeners.enq(WeakRef.new(listener))
  end
end