class Middleman::Deploy::Methods::Sftp

Public Instance Methods

process() click to toggle source
# File lib/middleman-deploy/methods/sftp.rb, line 8
def process
  puts "## Deploying via sftp to #{self.user}@#{self.host}:#{path}"

  # `nil` is a valid value for user and/or pass.
  Net::SFTP.start(self.host, self.user, password: self.pass, port: self.port) do |sftp|
    sftp.mkdir(self.path)

    Dir.chdir(self.server_instance.build_dir) do
      filtered_files.each do |filename|
        if File.directory?(filename)
          upload_directory(sftp, filename)
        else
          upload_file(sftp, filename)
        end
      end
    end
  end
end

Protected Instance Methods

handle_exception(exception,filename, file_path) click to toggle source
# File lib/middleman-deploy/methods/sftp.rb, line 29
def handle_exception(exception,filename, file_path)
  reply     = exception.message
  err_code  = reply[0, 3].to_i

  if err_code == 550
    sftp.upload(filename, file_path)
  end
end
upload_directory(sftp, filename) click to toggle source
# File lib/middleman-deploy/methods/sftp.rb, line 38
def upload_directory(sftp, filename)
  file_path = "#{self.path}/#{filename}"

  begin
    sftp.mkdir(file_path)
    puts "Created directory #{filename}"
  rescue
  end
end
upload_file(sftp, filename) click to toggle source
# File lib/middleman-deploy/methods/sftp.rb, line 48
def upload_file(sftp, filename)
  file_path = "#{self.path}/#{filename}"

  begin
    sftp.upload(filename, file_path)
  rescue Exception => exception
    handle_exception(exception, filename, file_path)
  end

  puts "Copied #{filename}"
end