Module: SimpleBackup
- Defined in:
- lib/rails_simple_backup_restore/simple_backup.rb
Class Method Summary collapse
- .backup ⇒ Object
- .current_backup_files ⇒ Object
- .db_dump_path ⇒ Object
- .init ⇒ Object
- .restore(file) ⇒ Object
Class Method Details
.backup ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rails_simple_backup_restore/simple_backup.rb', line 26 def self.backup init input_filenames = ["config/backup_version"] SerializationHelper::Base.new(YamlDb::Helper).dump db_dump_path input_filenames << db_dump_path input_filenames += current_backup_files zip = nil Dir.mktmpdir 'simple_backup' do |dir| zip_path = File.join(dir, "backup.zip") Zip::ZipFile.open(zip_path, Zip::ZipFile::CREATE) do |zipfile| input_filenames.each do |filename| zipfile.add(filename, Rails.root.join(filename)) end end zip = File.open(zip_path, 'r') end zip end |
.current_backup_files ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/rails_simple_backup_restore/simple_backup.rb', line 8 def self.current_backup_files files = [] backup_files_path = Rails.root.join("config", "backup_files") if backup_files_path.exist? backup_files_path.each_line do |line| Dir[line.strip].each do |path| next if File.directory?(path) files << path end end end files end |
.db_dump_path ⇒ Object
22 23 24 |
# File 'lib/rails_simple_backup_restore/simple_backup.rb', line 22 def self.db_dump_path "db/data.yml" end |
.init ⇒ Object
2 3 4 5 6 |
# File 'lib/rails_simple_backup_restore/simple_backup.rb', line 2 def self.init require 'tmpdir' require 'zip/zip' require 'yaml_db' end |
.restore(file) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/rails_simple_backup_restore/simple_backup.rb', line 50 def self.restore(file) init Dir.mktmpdir 'simple_restore' do |dir| Zip::ZipFile.open(file.path) do |zip| version = zip.find_entry "config/backup_version" raise "Invalid a backup file" unless version current_version = File.read("config/backup_version") raise "Backup version mismatch" if current_version != zip.read("config/backup_version") current_backup_files.each do |file| File.delete(file) end zip.each do |entry| File.open(entry.name, "wb") { |f| f.write entry.get_input_stream.read } end SerializationHelper::Base.new(YamlDb::Helper).load db_dump_path end end end |