class Rake::FtpUploader
Manage the uploading of files to an FTP account.
Attributes
          verbose[RW]
        
        Log uploads to standard output when true.
Public Class Methods
          connect(path, host, account, password) { |up| ... }
          
          click to toggle source
          
        
        
        Create an uploader and pass it to the given block as up. When
the block is complete, close the uploader.
# File lib/rake/contrib/ftptools.rb, line 93 def connect(path, host, account, password) up = self.new(path, host, account, password) begin yield(up) ensure up.close end end
          new(path, host, account, password)
          
          click to toggle source
          
        
        
        Create an FTP uploader targeting the directory path on
host using the given account and password.  path
will be the root path of the uploader.
# File lib/rake/contrib/ftptools.rb, line 106 def initialize(path, host, account, password) @created = Hash.new @path = path @ftp = Net::FTP.new(host, account, password) makedirs(@path) @ftp.chdir(@path) end
Public Instance Methods
          close()
          
          click to toggle source
          
        
        
        Close the uploader.
# File lib/rake/contrib/ftptools.rb, line 137 def close @ftp.close end
          makedirs(path)
          
          click to toggle source
          
        
        
        Create the directory path in the uploader root path.
# File lib/rake/contrib/ftptools.rb, line 115 def makedirs(path) route = [] File.split(path).each do |dir| route << dir current_dir = File.join(route) if @created[current_dir].nil? @created[current_dir] = true $stderr.puts "Creating Directory #{current_dir}" if @verbose @ftp.mkdir(current_dir) rescue nil end end end
          upload_files(wildcard)
          
          click to toggle source
          
        
        
        Upload all files matching wildcard to the uploader's root
path.
# File lib/rake/contrib/ftptools.rb, line 130 def upload_files(wildcard) FileList.glob(wildcard).each do |fn| upload(fn) end end
Private Instance Methods
          upload(file)
          
          click to toggle source
          
        
        
        Upload a single file to the uploader's root path.
# File lib/rake/contrib/ftptools.rb, line 144 def upload(file) $stderr.puts "Uploading #{file}" if @verbose dir = File.dirname(file) makedirs(dir) @ftp.putbinaryfile(file, file) unless File.directory?(file) end