Hello community,

here is the log from the commit of package rubygem-listen for openSUSE:Factory 
checked in at 2016-07-21 07:57:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-listen (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-listen.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-listen"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-listen/rubygem-listen.changes    
2016-03-07 13:27:44.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.rubygem-listen.new/rubygem-listen.changes       
2016-07-21 07:57:34.000000000 +0200
@@ -1,0 +2,6 @@
+Thu May 26 04:30:31 UTC 2016 - [email protected]
+
+- updated to version 3.1.5
+ see installed CHANGELOG.md
+
+-------------------------------------------------------------------

Old:
----
  listen-3.0.6.gem

New:
----
  listen-3.1.5.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-listen.spec ++++++
--- /var/tmp/diff_new_pack.MMvU40/_old  2016-07-21 07:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.MMvU40/_new  2016-07-21 07:57:35.000000000 +0200
@@ -24,12 +24,12 @@
 #
 
 Name:           rubygem-listen
-Version:        3.0.6
+Version:        3.1.5
 Release:        0
 %define mod_name listen
 %define mod_full_name %{mod_name}-%{version}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildRequires:  %{ruby >= 1.9.3}
+BuildRequires:  %{ruby >= 2.2.3}
 BuildRequires:  %{rubygem gem2rpm}
 BuildRequires:  ruby-macros >= 5
 BuildRequires:  update-alternatives

++++++ listen-3.0.6.gem -> listen-3.1.5.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2016-02-10 05:46:04.000000000 +0100
+++ new/README.md       2016-05-18 04:21:28.000000000 +0200
@@ -1,3 +1,7 @@
+## IMPORTANT: [Ruby 2.1 is officially outdated and 
unsupported!](https://www.ruby-lang.org/en/news/2016/03/30/ruby-2-1-9-released/)
 Please upgrade to Ruby 2.2 before installing Listen!
+
+### (To install for older versions, update Bundler to a prerelease version: 
`gem install bundler --pre` and Bundler should correctly resolve to an earlier 
gems for your given Ruby version).
+
 :exclamation: Listen is currently accepting more maintainers. Please [read 
this](https://github.com/guard/guard/wiki/Maintainers) if you're interested in 
joining the team.
 
 # Listen
@@ -13,7 +17,7 @@
 * You can watch multiple directories.
 * Regexp-patterns for ignoring paths for more accuracy and speed
 * Increased change detection accuracy on OS X HFS and VFAT volumes.
-* Tested on MRI Ruby environments (2.0+ only) via [Travis 
CI](https://travis-ci.org/guard/listen),
+* Tested on selected Ruby environments via [Travis 
CI](https://travis-ci.org/guard/listen). (See 
[.travis.yml](https:///github.com/guard/listen/master/.travis.yml) for 
supported/tested Ruby Versions),
 
 ## Issues / limitations
 
@@ -27,7 +31,7 @@
 * Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should 
work.
 * Windows and \*BSD adapter aren't continuously and automatically tested.
 * OSX adapter has some performance limitations 
([#342](https://github.com/guard/listen/issues/342)).
-* Ruby 1.9.3 is no longer maintained (and may not work with Listen) - it's 
best to upgrade to Ruby 2.2.2.
+* Ruby < 2.2.x is no longer supported - upgrade to Ruby 2.2 or 2.3
 
 Pull requests or help is very welcome for these.
 
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/base.rb 
new/lib/listen/adapter/base.rb
--- old/lib/listen/adapter/base.rb      2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/base.rb      2016-05-18 04:21:28.000000000 +0200
@@ -8,7 +8,7 @@
       attr_reader :options
 
       # TODO: only used by tests
-      DEFAULTS = {}
+      DEFAULTS = {}.freeze
 
       attr_reader :config
 
@@ -129,8 +129,12 @@
         _log(:error, formatted)
       end
 
-      def self._log(*args, &block)
-        Listen::Logger.send(*args, &block)
+      class << self
+        private
+
+        def _log(*args, &block)
+          Listen::Logger.send(*args, &block)
+        end
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/bsd.rb 
new/lib/listen/adapter/bsd.rb
--- old/lib/listen/adapter/bsd.rb       2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/bsd.rb       2016-05-18 04:21:28.000000000 +0200
@@ -16,7 +16,7 @@
           :rename
           # :link, :revoke
         ]
-      }
+      }.freeze
 
       BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '')
         Please add the following to your Gemfile to avoid polling for changes:
@@ -38,9 +38,9 @@
 
       private
 
-      def _configure(directory, &_callback)
+      def _configure(directory, &callback)
         @worker ||= KQueue::Queue.new
-        @callback = _callback
+        @callback = callback
         # use Record to make a snapshot of dir, so we
         # can detect new files
         _find(directory.to_s) { |path| _watch_file(path, @worker) }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/config.rb 
new/lib/listen/adapter/config.rb
--- old/lib/listen/adapter/config.rb    2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/config.rb    2016-05-18 04:21:28.000000000 +0200
@@ -11,7 +11,7 @@
       def initialize(directories, queue, silencer, adapter_options)
         # Default to current directory if no directories are supplied
         directories = [Dir.pwd] if directories.to_a.empty?
-        
+
         # TODO: fix (flatten, array, compact?)
         @directories = directories.map do |directory|
           Pathname.new(directory.to_s).realpath
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/darwin.rb 
new/lib/listen/adapter/darwin.rb
--- old/lib/listen/adapter/darwin.rb    2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/darwin.rb    2016-05-18 04:21:28.000000000 +0200
@@ -6,17 +6,37 @@
     # Adapter implementation for Mac OS X `FSEvents`.
     #
     class Darwin < Base
-      OS_REGEXP = /darwin(1.+)?$/i
+      OS_REGEXP = /darwin(?<major_version>1\d+)/i
 
       # The default delay between checking for changes.
-      DEFAULTS = { latency: 0.1 }
+      DEFAULTS = { latency: 0.1 }.freeze
+
+      INCOMPATIBLE_GEM_VERSION = <<-EOS.gsub(/^ {8}/, '')
+        rb-fsevent > 0.9.4 no longer supports OS X 10.6 through 10.8.
+
+        Please add the following to your Gemfile to avoid polling for changes:
+          require 'rbconfig'
+          if RbConfig::CONFIG['target_os'] =~ /darwin(1[0-3])/i
+            gem 'rb-fsevent', '<= 0.9.4'
+          end
+      EOS
+
+      def self.usable?
+        require 'rb-fsevent'
+        version = RbConfig::CONFIG['target_os'][OS_REGEXP, :major_version]
+        return false unless version
+        return true if version.to_i >= 13 # darwin13 is OS X 10.9
+
+        fsevent_version = Gem::Version.new(FSEvent::VERSION)
+        return true if fsevent_version <= Gem::Version.new('0.9.4')
+        Kernel.warn INCOMPATIBLE_GEM_VERSION
+        false
+      end
 
       private
 
       # NOTE: each directory gets a DIFFERENT callback!
       def _configure(dir, &callback)
-        require 'rb-fsevent'
-
         opts = { latency: options.latency }
 
         @workers ||= ::Queue.new
@@ -38,7 +58,7 @@
       def _process_event(dir, event)
         _log :debug, "fsevent: processing event: #{event.inspect}"
         event.each do |path|
-          new_path = Pathname.new(path.sub(/\/$/, ''))
+          new_path = Pathname.new(path.sub(%r{\/$}, ''))
           _log :debug, "fsevent: #{new_path}"
           # TODO: does this preserve symlinks?
           rel_path = new_path.relative_path_from(dir).to_s
@@ -50,7 +70,8 @@
         _log :debug, "fsevent: running worker: #{worker.inspect}"
         worker.run
       rescue
-        _log_exception 'fsevent: running worker failed: %s:%s called from: 
%s', caller
+        format_string = 'fsevent: running worker failed: %s:%s called from: %s'
+        _log_exception format_string, caller
       end
 
       def _run_workers_in_background(workers)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/linux.rb 
new/lib/listen/adapter/linux.rb
--- old/lib/listen/adapter/linux.rb     2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/linux.rb     2016-05-18 04:21:28.000000000 +0200
@@ -14,12 +14,12 @@
           :close_write
         ],
         wait_for_delay: 0.1
-      }
+      }.freeze
 
       private
 
       WIKI_URL = 'https://github.com/guard/listen'\
-        '/wiki/Increasing-the-amount-of-inotify-watchers'
+        '/wiki/Increasing-the-amount-of-inotify-watchers'.freeze
 
       INOTIFY_LIMIT_MESSAGE = <<-EOS.gsub(/^\s*/, '')
         FATAL: Listen error: unable to monitor directories for changes.
@@ -35,7 +35,9 @@
       end
 
       def _run
+        Thread.current[:listen_blocking_read_thread] = true
         @worker.run
+        Thread.current[:listen_blocking_read_thread] = false
       end
 
       def _process_event(dir, event)
@@ -50,10 +52,8 @@
         if /1|true/ =~ ENV['LISTEN_GEM_SIMULATE_FSEVENT']
           if (event.flags & [:moved_to, :moved_from]) || _dir_event?(event)
             rel_path = path.dirname.relative_path_from(dir).to_s
-            _queue_change(:dir, dir, rel_path, {})
-          else
-            _queue_change(:dir, dir, rel_path, {})
           end
+          _queue_change(:dir, dir, rel_path, {})
           return
         end
 
@@ -99,7 +99,7 @@
       end
 
       def _stop
-        @worker.close
+        @worker && @worker.close
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/polling.rb 
new/lib/listen/adapter/polling.rb
--- old/lib/listen/adapter/polling.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/polling.rb   2016-05-18 04:21:28.000000000 +0200
@@ -8,7 +8,7 @@
     class Polling < Base
       OS_REGEXP = // # match every OS
 
-      DEFAULTS = { latency: 1.0, wait_for_delay: 0.05 }
+      DEFAULTS = { latency: 1.0, wait_for_delay: 0.05 }.freeze
 
       private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter/windows.rb 
new/lib/listen/adapter/windows.rb
--- old/lib/listen/adapter/windows.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter/windows.rb   2016-05-18 04:21:28.000000000 +0200
@@ -24,21 +24,21 @@
 
       private
 
-      def _configure(dir, &callback)
+      def _configure(dir)
         require 'wdm'
         _log :debug, 'wdm - starting...'
         @worker ||= WDM::Monitor.new
         @worker.watch_recursively(dir.to_s, :files) do |change|
-          callback.call([:file, change])
+          yield([:file, change])
         end
 
         @worker.watch_recursively(dir.to_s, :directories) do |change|
-          callback.call([:dir, change])
+          yield([:dir, change])
         end
 
         events = [:attributes, :last_write]
         @worker.watch_recursively(dir.to_s, *events) do |change|
-          callback.call([:attr, change])
+          yield([:attr, change])
         end
       end
 
@@ -70,7 +70,6 @@
             _queue_change(:dir, dir, Pathname(rel_path).dirname.to_s, {})
           elsif change.type == :added
             _queue_change(:dir, dir, rel_path, {})
-          else
             # do nothing - changed directory means either:
             #   - removed subdirs (handled above)
             #   - added subdirs (handled above)
@@ -81,7 +80,7 @@
         end
       rescue
         details = event.inspect
-        _log :error, format('wdm - callback (%): %s:%s', details, $ERROR_INFO,
+        _log :error, format('wdm - callback (%s): %s:%s', details, $ERROR_INFO,
                             $ERROR_POSITION * "\n")
         raise
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/adapter.rb new/lib/listen/adapter.rb
--- old/lib/listen/adapter.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/adapter.rb   2016-05-18 04:21:28.000000000 +0200
@@ -7,37 +7,39 @@
 
 module Listen
   module Adapter
-    OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows]
+    OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows].freeze
     POLLING_FALLBACK_MESSAGE = 'Listen will be polling for changes.'\
-      'Learn more at https://github.com/guard/listen#listen-adapters.'
+      'Learn more at https://github.com/guard/listen#listen-adapters.'.freeze
 
-    def self.select(options = {})
-      _log :debug, 'Adapter: considering polling ...'
-      return Polling if options[:force_polling]
-      _log :debug, 'Adapter: considering optimized backend...'
-      return _usable_adapter_class if _usable_adapter_class
-      _log :debug, 'Adapter: falling back to polling...'
-      _warn_polling_fallback(options)
-      Polling
-    rescue
-      _log :warn, format('Adapter: failed: %s:%s', $ERROR_POSITION.inspect,
-                         $ERROR_POSITION * "\n")
-      raise
-    end
-
-    private
-
-    def self._usable_adapter_class
-      OPTIMIZED_ADAPTERS.detect(&:usable?)
-    end
-
-    def self._warn_polling_fallback(options)
-      msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE)
-      Kernel.warn "[Listen warning]:\n  #{msg}" if msg
-    end
-
-    def self._log(type, message)
-      Listen::Logger.send(type, message)
+    class << self
+      def select(options = {})
+        _log :debug, 'Adapter: considering polling ...'
+        return Polling if options[:force_polling]
+        _log :debug, 'Adapter: considering optimized backend...'
+        return _usable_adapter_class if _usable_adapter_class
+        _log :debug, 'Adapter: falling back to polling...'
+        _warn_polling_fallback(options)
+        Polling
+      rescue
+        _log :warn, format('Adapter: failed: %s:%s', $ERROR_POSITION.inspect,
+                           $ERROR_POSITION * "\n")
+        raise
+      end
+
+      private
+
+      def _usable_adapter_class
+        OPTIMIZED_ADAPTERS.detect(&:usable?)
+      end
+
+      def _warn_polling_fallback(options)
+        msg = options.fetch(:polling_fallback_message, 
POLLING_FALLBACK_MESSAGE)
+        Kernel.warn "[Listen warning]:\n  #{msg}" if msg
+      end
+
+      def _log(type, message)
+        Listen::Logger.send(type, message)
+      end
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/backend.rb new/lib/listen/backend.rb
--- old/lib/listen/backend.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/backend.rb   2016-05-18 04:21:28.000000000 +0200
@@ -2,10 +2,14 @@
 require 'listen/adapter/base'
 require 'listen/adapter/config'
 
+require 'forwardable'
+
 # This class just aggregates configuration object to avoid Listener specs
 # from exploding with huge test setup blocks
 module Listen
   class Backend
+    extend Forwardable
+
     def initialize(directories, queue, silencer, config)
       adapter_select_opts = config.adapter_select_options
 
@@ -22,17 +26,10 @@
       @adapter = adapter_class.new(aconfig)
     end
 
-    def start
-      adapter.start
-    end
-
-    def stop
-      adapter.stop
-    end
+    delegate start: :adapter
+    delegate stop: :adapter
 
-    def min_delay_between_events
-      @min_delay_between_events
-    end
+    attr_reader :min_delay_between_events
 
     private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/change.rb new/lib/listen/change.rb
--- old/lib/listen/change.rb    2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/change.rb    2016-05-18 04:21:28.000000000 +0200
@@ -35,7 +35,7 @@
       cookie = options[:cookie]
 
       if !cookie && config.silenced?(rel_path, type)
-        Listen::Logger.debug {  "(silenced): #{rel_path.inspect}" }
+        Listen::Logger.debug { "(silenced): #{rel_path.inspect}" }
         return
       end
 
@@ -49,16 +49,14 @@
       if change
         options = cookie ? { cookie: cookie } : {}
         config.queue(type, change, watched_dir, rel_path, options)
+      elsif type == :dir
+        # NOTE: POSSIBLE RECURSION
+        # TODO: fix - use a queue instead
+        Directory.scan(self, rel_path, options)
       else
-        if type == :dir
-          # NOTE: POSSIBLE RECURSION
-          # TODO: fix - use a queue instead
-          Directory.scan(self, rel_path, options)
-        else
-          change = File.change(record, rel_path)
-          return if !change || options[:silence]
-          config.queue(:file, change, watched_dir, rel_path)
-        end
+        change = File.change(record, rel_path)
+        return if !change || options[:silence]
+        config.queue(:file, change, watched_dir, rel_path)
       end
     rescue RuntimeError => ex
       msg = format(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/directory.rb new/lib/listen/directory.rb
--- old/lib/listen/directory.rb 2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/directory.rb 2016-05-18 04:21:28.000000000 +0200
@@ -12,7 +12,7 @@
 
       # TODO: use children(with_directory: false)
       path = dir + rel_path
-      current = Set.new(path.children)
+      current = Set.new(_children(path))
 
       Listen::Logger.debug do
         format('%s: %s(%s): %s -> %s',
@@ -28,7 +28,7 @@
         end
       rescue Errno::ENOENT
         # The directory changed meanwhile, so rescan it
-        current = Set.new(path.children)
+        current = Set.new(_children(path))
         retry
       end
 
@@ -72,5 +72,16 @@
       opts.delete(:recursive)
       snapshot.invalidate(type, path, opts)
     end
+
+    def self._children(path)
+      return path.children unless RUBY_ENGINE == 'jruby'
+
+      # JRuby inconsistency workaround, see:
+      # https://github.com/jruby/jruby/issues/3840
+      exists = path.exist?
+      directory = path.directory?
+      return path.children unless exists && !directory
+      raise Errno::ENOTDIR, path.to_s
+    end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/event/config.rb 
new/lib/listen/event/config.rb
--- old/lib/listen/event/config.rb      2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/event/config.rb      2016-05-18 04:21:28.000000000 +0200
@@ -27,9 +27,7 @@
         Time.now.to_f
       end
 
-      def event_queue
-        @event_queue
-      end
+      attr_reader :event_queue
 
       def callable?
         @block
@@ -39,9 +37,7 @@
         @queue_optimizer.smoosh_changes(changes)
       end
 
-      def min_delay_between_events
-        @min_delay_between_events
-      end
+      attr_reader :min_delay_between_events
 
       def stopped?
         listener.state == :stopped
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/event/queue.rb 
new/lib/listen/event/queue.rb
--- old/lib/listen/event/queue.rb       2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/event/queue.rb       2016-05-18 04:21:28.000000000 +0200
@@ -1,8 +1,12 @@
 require 'thread'
 
+require 'forwardable'
+
 module Listen
   module Event
     class Queue
+      extend Forwardable
+
       class Config
         def initialize(relative)
           @relative = relative
@@ -31,13 +35,8 @@
         block.call(args) if block
       end
 
-      def empty?
-        event_queue.empty?
-      end
-
-      def pop
-        event_queue.pop
-      end
+      delegate empty?: :event_queue
+      delegate pop: :event_queue
 
       private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/file.rb new/lib/listen/file.rb
--- old/lib/listen/file.rb      2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/file.rb      2016-05-18 04:21:28.000000000 +0200
@@ -26,7 +26,7 @@
       end
 
       return if /1|true/ =~ ENV['LISTEN_GEM_DISABLE_HASHING']
-      return unless self.inaccurate_mac_time?(lstat)
+      return unless inaccurate_mac_time?(lstat)
 
       # Check if change happened within 1 second (maybe it's even
       # too much, e.g. 0.3-0.5 could be sufficient).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/fsm.rb new/lib/listen/fsm.rb
--- old/lib/listen/fsm.rb       2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/fsm.rb       2016-05-18 04:21:28.000000000 +0200
@@ -111,7 +111,8 @@
       attr_reader :name, :transitions
 
       def initialize(name, transitions = nil, &block)
-        @name, @block = name, block
+        @name = name
+        @block = block
         @transitions = nil
         @transitions = Array(transitions).map(&:to_sym) if transitions
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/internals/thread_pool.rb 
new/lib/listen/internals/thread_pool.rb
--- old/lib/listen/internals/thread_pool.rb     2016-02-10 05:46:04.000000000 
+0100
+++ new/lib/listen/internals/thread_pool.rb     2016-05-18 04:21:28.000000000 
+0200
@@ -13,8 +13,16 @@
         return if @threads.empty? # return to avoid using possibly stubbed 
Queue
 
         killed = Queue.new
+        # You can't kill a read on a descriptor in JRuby, so let's just
+        # ignore running threads (listen rb-inotify waiting for disk activity
+        # before closing)  pray threads die faster than they are created...
+        limit = RUBY_ENGINE == 'jruby' ? [1] : []
+
         killed << @threads.pop.kill until @threads.empty?
-        killed.pop.join until killed.empty?
+        until killed.empty?
+          th = killed.pop
+          th.join(*limit) unless th[:listen_blocking_read_thread]
+        end
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/listener/config.rb 
new/lib/listen/listener/config.rb
--- old/lib/listen/listener/config.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/listener/config.rb   2016-05-18 04:21:28.000000000 +0200
@@ -10,7 +10,7 @@
         # Backend selecting options
         force_polling: false,
         polling_fallback_message: nil
-      }
+      }.freeze
 
       def initialize(opts)
         @options = DEFAULTS.merge(opts)
@@ -23,13 +23,9 @@
         @relative
       end
 
-      def min_delay_between_events
-        @min_delay_between_events
-      end
+      attr_reader :min_delay_between_events
 
-      def silencer_rules
-        @silencer_rules
-      end
+      attr_reader :silencer_rules
 
       def adapter_instance_options(klass)
         valid_keys = klass.const_get('DEFAULTS').keys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/listener.rb new/lib/listen/listener.rb
--- old/lib/listen/listener.rb  2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/listener.rb  2016-05-18 04:21:28.000000000 +0200
@@ -19,6 +19,7 @@
 
 module Listen
   class Listener
+    # TODO: move the state machine's methods private
     include Listen::FSM
 
     # Initializes the directories listener.
@@ -61,13 +62,13 @@
 
     default_state :initializing
 
-    state :initializing, to: :backend_started
+    state :initializing, to: [:backend_started, :stopped]
 
-    state :backend_started, to: [:frontend_ready] do
+    state :backend_started, to: [:frontend_ready, :stopped] do
       backend.start
     end
 
-    state :frontend_ready, to: [:processing_events] do
+    state :frontend_ready, to: [:processing_events, :stopped] do
       processor.setup
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/queue_optimizer.rb 
new/lib/listen/queue_optimizer.rb
--- old/lib/listen/queue_optimizer.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/queue_optimizer.rb   2016-05-18 04:21:28.000000000 +0200
@@ -88,7 +88,7 @@
     # editor rename() call (e.g. Kate and Sublime)
     def _reinterpret_related_changes(cookies)
       table = { moved_to: :added, moved_from: :removed }
-      cookies.map do |_, changes|
+      cookies.flat_map do |_, changes|
         data = _detect_possible_editor_save(changes)
         if data
           to_dir, to_file = data
@@ -101,7 +101,7 @@
             [table.fetch(change, change), dir, path]
           end
         end
-      end.flatten(1)
+      end
     end
 
     def _detect_possible_editor_save(changes)
@@ -113,9 +113,9 @@
       changes.each do |data|
         case data[1]
         when :moved_from
-          from_type, from_change, _, from, _ = data
+          from_type, from_change, _, from, = data
         when :moved_to
-          to_type, to_change, to_dir, to, _ = data
+          to_type, to_change, to_dir, to, = data
         else
           return nil
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/record/entry.rb 
new/lib/listen/record/entry.rb
--- old/lib/listen/record/entry.rb      2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/record/entry.rb      2016-05-18 04:21:28.000000000 +0200
@@ -6,14 +6,16 @@
       # file: "/home/me/watched_dir", "app/models", "foo.rb"
       # dir, "/home/me/watched_dir", "."
       def initialize(root, relative, name = nil)
-        @root, @relative, @name = root, relative, name
+        @root = root
+        @relative = relative
+        @name = name
       end
 
       attr_reader :root, :relative, :name
 
       def children
         child_relative = _join
-        (Dir.entries(sys_path) - %w(. ..)).map do |name|
+        (_entries(sys_path) - %w(. ..)).map do |name|
           Entry.new(@root, child_relative, name)
         end
       end
@@ -46,6 +48,17 @@
         args = [@relative, @name].compact
         args.empty? ? nil : ::File.join(*args)
       end
+
+      def _entries(dir)
+        return Dir.entries(dir) unless RUBY_ENGINE == 'jruby'
+
+        # JRuby inconsistency workaround, see:
+        # https://github.com/jruby/jruby/issues/3840
+        exists = ::File.exist?(dir)
+        directory = ::File.directory?(dir)
+        return Dir.entries(dir) unless exists && !directory
+        raise Errno::ENOTDIR, dir
+      end
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/record/symlink_detector.rb 
new/lib/listen/record/symlink_detector.rb
--- old/lib/listen/record/symlink_detector.rb   2016-02-10 05:46:04.000000000 
+0100
+++ new/lib/listen/record/symlink_detector.rb   2016-05-18 04:21:28.000000000 
+0200
@@ -4,9 +4,9 @@
   # @private api
   class Record
     class SymlinkDetector
-      WIKI = 'https://github.com/guard/listen/wiki/Duplicate-directory-errors'
+      WIKI = 
'https://github.com/guard/listen/wiki/Duplicate-directory-errors'.freeze
 
-      SYMLINK_LOOP_ERROR = <<-EOS
+      SYMLINK_LOOP_ERROR = <<-EOS.freeze
         ** ERROR: directory is already being watched! **
 
         Directory: %s
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/record.rb new/lib/listen/record.rb
--- old/lib/listen/record.rb    2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/record.rb    2016-05-18 04:21:28.000000000 +0200
@@ -74,9 +74,7 @@
       Hash.new { |h, k| h[k] = Hash.new }
     end
 
-    def tree
-      @tree
-    end
+    attr_reader :tree
 
     def _fast_update_file(dirname, basename, data)
       if [nil, '', '.'].include? dirname
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/silencer.rb new/lib/listen/silencer.rb
--- old/lib/listen/silencer.rb  2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/silencer.rb  2016-05-18 04:21:28.000000000 +0200
@@ -15,7 +15,7 @@
     )(/|$)}x
 
     # The default list of files that get ignored.
-    DEFAULT_IGNORED_EXTENSIONS  = /(?:
+    DEFAULT_IGNORED_EXTENSIONS = %r{(?:
       # Kate's tmp\/swp files
       \..*\d+\.new
       | \.kate-swp
@@ -50,7 +50,7 @@
       | \.DS_Store
       | \.tmp
       | ~
-    )$/x
+    )$}x
 
     attr_accessor :only_patterns, :ignore_patterns
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen/version.rb new/lib/listen/version.rb
--- old/lib/listen/version.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen/version.rb   2016-05-18 04:21:28.000000000 +0200
@@ -1,3 +1,3 @@
 module Listen
-  VERSION = '3.0.6'
+  VERSION = '3.1.5'.freeze
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/listen.rb new/lib/listen.rb
--- old/lib/listen.rb   2016-02-10 05:46:04.000000000 +0100
+++ new/lib/listen.rb   2016-05-18 04:21:28.000000000 +0200
@@ -4,6 +4,11 @@
 
 require 'listen/internals/thread_pool'
 
+# Show warnings about vulnerabilities, bugs and outdated Rubies, since previous
+# versions aren't tested or officially supported.
+require 'ruby_dep/warning'
+RubyDep::Warning.new.show_warnings
+
 # Always set up logging by default first time file is required
 #
 # NOTE: If you need to clear the logger completely, do so *after*
@@ -45,10 +50,7 @@
       @listeners ||= []
 
       # TODO: should use a mutex for this
-      @listeners.each do |listener|
-        # call stop to halt the main loop
-        listener.stop
-      end
+      @listeners.each(&:stop)
       @listeners = nil
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2016-02-10 05:46:04.000000000 +0100
+++ new/metadata        2016-05-18 04:21:28.000000000 +0200
@@ -1,33 +1,42 @@
 --- !ruby/object:Gem::Specification
 name: listen
 version: !ruby/object:Gem::Version
-  version: 3.0.6
+  version: 3.1.5
 platform: ruby
 authors:
 - Thibaud Guillaume-Gentil
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2016-02-10 00:00:00.000000000 Z
+date: 2016-05-18 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: rb-fsevent
   requirement: !ruby/object:Gem::Requirement
     requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.9'
     - - ">="
       - !ruby/object:Gem::Version
-        version: 0.9.3
+        version: 0.9.4
   type: :runtime
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.9'
     - - ">="
       - !ruby/object:Gem::Version
-        version: 0.9.3
+        version: 0.9.4
 - !ruby/object:Gem::Dependency
   name: rb-inotify
   requirement: !ruby/object:Gem::Requirement
     requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.9'
     - - ">="
       - !ruby/object:Gem::Version
         version: 0.9.7
@@ -35,23 +44,40 @@
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.9'
     - - ">="
       - !ruby/object:Gem::Version
         version: 0.9.7
 - !ruby/object:Gem::Dependency
+  name: ruby_dep
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.2'
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.2'
+- !ruby/object:Gem::Dependency
   name: bundler
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - ">="
+    - - "~>"
       - !ruby/object:Gem::Version
-        version: 1.3.5
+        version: '1.12'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - ">="
+    - - "~>"
       - !ruby/object:Gem::Version
-        version: 1.3.5
+        version: '1.12'
 description: The Listen gem listens to file modifications and notifies you 
about the
   changes. Works everywhere!
 email: [email protected]
@@ -106,9 +132,12 @@
 - lib
 required_ruby_version: !ruby/object:Gem::Requirement
   requirements:
+  - - "~>"
+    - !ruby/object:Gem::Version
+      version: '2.2'
   - - ">="
     - !ruby/object:Gem::Version
-      version: 1.9.3
+      version: 2.2.3
 required_rubygems_version: !ruby/object:Gem::Requirement
   requirements:
   - - ">="
@@ -116,7 +145,7 @@
       version: '0'
 requirements: []
 rubyforge_project: 
-rubygems_version: 2.4.5
+rubygems_version: 2.5.1
 signing_key: 
 specification_version: 4
 summary: Listen to file modifications


Reply via email to