Skip to content

Instantly share code, notes, and snippets.

@akerbos
Created May 6, 2015 06:39
Show Gist options
  • Save akerbos/70e294bfb7aea943dbea to your computer and use it in GitHub Desktop.
Save akerbos/70e294bfb7aea943dbea to your computer and use it in GitHub Desktop.
MWE for conflict of listen and parallel gems
#!/usr/bin/ruby
require 'rubygems'
gem "parallel"
require 'parallel'
gem "listen"
require 'listen'
listener = Listen.to('.') do |modified, added, removed|
$changetime = Time.now
end
$changetime = Time.now
listener.start
begin
Parallel.map([1,2,3,4], :finish => lambda { |a,b,c| puts c }) { |job|
begin
# Do something time-consuming
sleep(2)
job
rescue => e
puts "\tAn error occurred: #{e.to_s}"
# Should we break? Let's see what kinds of errors we get...
end
}
# Do we have to care about Parallel::DeadWorker?
# Wait for files to change
files = Thread.new do
while ( $changetime <= start_time || Time.now - $changetime < 2 )
sleep(0.5)
end
while ( Thread.current[:raisetarget] == nil ) do end
Thread.current[:raisetarget].raise(Interrupt.new("Files have changed"))
end
files[:raisetarget] = Thread.current
end while ( true )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment