Module: Spider::Fork
- Defined in:
- lib/spiderfw/utils/fork.rb
Overview
A safe fork keeping track of resources needing to be closed.
Class Method Summary collapse
-
.close_resources ⇒ Object
Closes all resources.
-
.fork(&proc) ⇒ Object
Closes resources, than forks.
-
.resources_to_close(*list) ⇒ Object
Adds a list of resources.
Class Method Details
.close_resources ⇒ Object
Closes all resources.
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/spiderfw/utils/fork.rb', line 13 def self.close_resources return unless @resources @mutex ||= Mutex.new @mutex.synchronize do @resources.each do |res| @resource.close if resource && resource.respond_to?(:close) && !resource.closed? end @resources.clear end end |
.fork(&proc) ⇒ Object
Closes resources, than forks.
25 26 27 28 29 30 31 |
# File 'lib/spiderfw/utils/fork.rb', line 25 def self.fork(&proc) child = Kernel.fork do Spider::Fork.close_resources yield end return child end |
.resources_to_close(*list) ⇒ Object
Adds a list of resources. Resources must respond to :close.
7 8 9 10 |
# File 'lib/spiderfw/utils/fork.rb', line 7 def self.resources_to_close(*list) @resources ||= [] @resources += list end |