Class: Bio::Command::Tmpdir
Overview
Bio::Command::Tmpdir is a wrapper class to handle temporary directory like Tempfile class. A temporary directory is created when the object of the class is created, and automatically removed when the object is destroyed by GC.
BioRuby library internal use only.
Class Method Summary (collapse)
-
+ (Object) callback(data)
Returns finalizer object for Tmpdir class.
Instance Method Summary (collapse)
-
- (Object) close!
Removes the temporary directory.
-
- (Tmpdir) initialize(prefix_suffix = nil, tmpdir = nil)
constructor
Creates a new Tmpdir object.
-
- (Object) path
Path to the temporay directory.
Constructor Details
- (Tmpdir) initialize(prefix_suffix = nil, tmpdir = nil)
Creates a new Tmpdir object. The arguments are the same as Bio::Command.mktmpdir.
Arguments:
-
(optional) prefix_suffix: String (or Array)
-
(optional) tmpdir: String: temporary directory's path
Returns |
Tmpdir object |
586 587 588 589 590 591 |
# File 'lib/bio/command.rb', line 586 def initialize(prefix_suffix = nil, tmpdir = nil) @data = [] @clean_proc = self.class.callback(@data) ObjectSpace.define_finalizer(self, @clean_proc) @data.push(@path = Bio::Command.mktmpdir(prefix_suffix, tmpdir).freeze) end |
Class Method Details
+ (Object) callback(data)
Returns finalizer object for Tmpdir class. Internal use only. Users should not call this method directly.
Acknowledgement: The essense of the code is taken from tempfile.rb in Ruby 1.8.7.
Arguments:
-
(required) data: Array containing internal data
Returns |
Proc object |
560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 |
# File 'lib/bio/command.rb', line 560 def self.callback(data) pid = $$ lambda { path, = *data if pid == $$ $stderr.print "removing ", path, " ..." if $DEBUG if path and !path.empty? and File.directory?(path) and !File.symlink?(path) then Bio::Command.remove_entry_secure(path) $stderr.print "done\n" if $DEBUG else $stderr.print "skipped\n" if $DEBUG end end } end |
Instance Method Details
- (Object) close!
Removes the temporary directory.
Returns |
nil |
603 604 605 606 607 608 609 610 611 612 |
# File 'lib/bio/command.rb', line 603 def close! # raise error if path is nil self.path # finilizer object is called to remove the directory @clean_proc.call # unregister finalizer ObjectSpace.undefine_finalizer(self) # @data and @path is removed @data = @path = nil end |
- (Object) path
Path to the temporay directory
Returns |
String |
596 597 598 |
# File 'lib/bio/command.rb', line 596 def path @path || raise(IOError, 'removed temporary directory') end |