Manage the uploading of files to an FTP account.

Methods
C
M
N
U
Attributes
[RW] verbose

Log uploads to standard output when true.

Class Public methods
new(path, host, account, password)

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 ../ruby/lib/rake/contrib/ftptools.rb, line 105
def initialize(path, host, account, password)
  @created = Hash.new
  @path = path
  @ftp = Net::FTP.new(host, account, password)
  makedirs(@path)
  @ftp.chdir(@path)
end
Instance Public methods
close()

Close the uploader.

# File ../ruby/lib/rake/contrib/ftptools.rb, line 136
def close
  @ftp.close
end
connect(path, host, account, password)

Create an uploader and pass it to the given block as up. When the block is complete, close the uploader.

# File ../ruby/lib/rake/contrib/ftptools.rb, line 92
def connect(path, host, account, password)
  up = self.new(path, host, account, password)
  begin
    yield(up)
  ensure
    up.close
  end
end
makedirs(path)

Create the directory path in the uploader root path.

# File ../ruby/lib/rake/contrib/ftptools.rb, line 114
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)

Upload all files matching wildcard to the uploader's root path.

# File ../ruby/lib/rake/contrib/ftptools.rb, line 129
def upload_files(wildcard)
  Dir[wildcard].each do |fn|
    upload(fn)
  end
end
Instance Private methods
upload(file)

Upload a single file to the uploader's root path.

# File ../ruby/lib/rake/contrib/ftptools.rb, line 143
def upload(file)
  $stderr.puts "Uploading #{file}" if @verbose
  dir = File.dirname(file)
  makedirs(dir)
  @ftp.putbinaryfile(file, file) unless File.directory?(file)
end