Sha256: 1d0bae15ea91ac3adfc6ca8810f44882f51f081013e08db19a8fc68d1e23e048

Contents?: true

Size: 863 Bytes

Versions: 1

Compression:

Stored size: 863 Bytes

Contents

require 'net/sftp'

module ScalingoBackupsManager
  class SftpTools
    attr_accessor :ftp_host

    def initialize(ftp_host)
      @ftp_host = ftp_host
    end

    def start
      Net::SFTP.start(@ftp_host[:host], @ftp_host[:user], password: @ftp_host[:password], port: @ftp_host[:port]) do |sftp|
        yield(sftp) if block_given?
      end
    end

    def mkdir!(path)
      start do |sftp|
        folder_tree = []
        path.split("/").each do |folder_name|
          next if folder_name.blank?

          folder_tree << folder_name
          begin
            sftp.mkdir!(folder_tree.join("/"))
          rescue
          end
        end
      end
    end

    def upload_file(filepath, remote_dir)
      filename = filepath.split('/').last
      start do |sftp|
        sftp.upload!(filepath, "#{remote_dir}/#{filename}")
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
scalingo_backups_manager-0.4.0 lib/scalingo_backups_manager/sftp_tools.rb