Class: EasyBackup::Adapter::FileSystem

Inherits:
Object
  • Object
show all
Defined in:
lib/easy_backup/adapter/file_system.rb

Instance Method Summary collapse

Constructor Details

#initializeFileSystem

Returns a new instance of FileSystem.



5
6
7
8
# File 'lib/easy_backup/adapter/file_system.rb', line 5

def initialize
  @folders = []
  @files = []
end

Instance Method Details

#file(file_name) ⇒ Object



18
19
20
# File 'lib/easy_backup/adapter/file_system.rb', line 18

def file(file_name)
  @files << file_name
end

#filesObject



22
23
24
# File 'lib/easy_backup/adapter/file_system.rb', line 22

def files
  @files.map { |f| f.is_a?(Proc) ? f.call : f }
end

#folder(path) ⇒ Object



10
11
12
# File 'lib/easy_backup/adapter/file_system.rb', line 10

def folder(path)
  @folders << path
end

#foldersObject



14
15
16
# File 'lib/easy_backup/adapter/file_system.rb', line 14

def folders
  @folders.map { |f| f.is_a?(Proc) ? f.call : f }
end

#save(resource) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/easy_backup/adapter/file_system.rb', line 63

def save(resource)
  folders.each do |folder|
    EasyBackup.logger.info "[FileSystem] Saving #{resource}\n#{' '*15}into #{folder}"

    FileUtils.mkpath folder unless Dir.exist? folder
    if Dir.exist? resource
      FileUtils.cp_r resource, "#{folder}/#{File.basename(resource)}"
    else
      FileUtils.cp resource, "#{folder}/#{File.basename(resource)}"
    end
  end
end

#send_to(storages) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/easy_backup/adapter/file_system.rb', line 34

def send_to(storages)
  if zip_file
    zip_file_name = zip_path(zip_file)

    EasyBackup.logger.info "[FileSystem] Zip #{zip_file_name}"
    FileUtils.mkpath File.dirname(zip_file_name)
    ZipFile.open(zip_file_name, ZipFile::CREATE) do |zip|
      (files | folders).each do |resource|
        if Dir.exist? resource
          EasyBackup.logger.info "#{' '*13}add #{resource}"
          Dir["#{resource}/**/**"].each do |r|
            EasyBackup.logger.info "#{' '*13}add #{r}" unless Dir.exist? r
            zip.add "#{File.basename(resource)}/#{r.gsub("#{resource}/", '')}", r
          end
        else
          EasyBackup.logger.info "#{' '*13}add #{resource}"
          zip.add File.basename(resource), resource
        end
      end
    end
    storages.each { |s| s.save zip_file_name }
    FileUtils.rm zip_file_name
  else
    (files | folders).each do |resource|
      storages.each { |s| s.save resource } if File.exist? resource
    end
  end
end

#zip(file_name) ⇒ Object



26
27
28
# File 'lib/easy_backup/adapter/file_system.rb', line 26

def zip(file_name)
  @zip_file = file_name
end

#zip_fileObject



30
31
32
# File 'lib/easy_backup/adapter/file_system.rb', line 30

def zip_file
  @zip_file.is_a?(Proc) ? @zip_file.call : @zip_file
end