Class: Net::SFTP::Operations::FileFactory
- Inherits:
-
Object
- Object
- Net::SFTP::Operations::FileFactory
- Defined in:
- lib/net/sftp/operations/file_factory.rb
Overview
A factory class for opening files and returning Operations::File instances that wrap the SFTP handles that represent them. This is a convenience class for use when working with files synchronously. Rather than relying on the programmer to provide callbacks that define a state machine that describes the behavior of the program, this class (and Operations::File) provide an interface where calls will block until they return, mimicking the IO class’ interface.
Instance Attribute Summary collapse
-
#sftp ⇒ Object
readonly
The SFTP session object that drives this file factory.
Instance Method Summary collapse
-
#directory?(path) ⇒ Boolean
Returns
true
if the argument refers to a directory on the remote host. -
#initialize(sftp) ⇒ FileFactory
constructor
Create a new instance on top of the given SFTP session instance.
-
#open(name, flags = "r", mode = nil, &block) ⇒ Object
:call-seq: open(name, flags=“r”, mode=nil) -> file open(name, flags=“r”, mode=nil) { |file| … }.
Constructor Details
#initialize(sftp) ⇒ FileFactory
Create a new instance on top of the given SFTP session instance.
18 19 20 |
# File 'lib/net/sftp/operations/file_factory.rb', line 18 def initialize(sftp) @sftp = sftp end |
Instance Attribute Details
#sftp ⇒ Object (readonly)
The SFTP session object that drives this file factory.
15 16 17 |
# File 'lib/net/sftp/operations/file_factory.rb', line 15 def sftp @sftp end |
Instance Method Details
#directory?(path) ⇒ Boolean
Returns true
if the argument refers to a directory on the remote host.
55 56 57 |
# File 'lib/net/sftp/operations/file_factory.rb', line 55 def directory?(path) sftp.lstat!(path).directory? end |
#open(name, flags = "r", mode = nil, &block) ⇒ Object
:call-seq:
open(name, flags="r", mode=nil) -> file
open(name, flags="r", mode=nil) { |file| ... }
Attempt to open a file on the remote server. The flags
parameter accepts the same values as the standard Ruby ::File#open method. The mode
parameter must be an integer describing the permissions to use if a new file is being created.
If a block is given, the new Operations::File instance will be yielded to it, and closed automatically when the block terminates. Otherwise the object will be returned, and it is the caller’s responsibility to close the file.
sftp.file.open("/tmp/names.txt", "w") do |f|
# ...
end
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/net/sftp/operations/file_factory.rb', line 39 def open(name, flags="r", mode=nil, &block) handle = sftp.open!(name, flags, :permissions => mode) file = Operations::File.new(sftp, handle) if block_given? begin yield file ensure file.close end else return file end end |