Class: DatabaseBackup
- Inherits:
-
Object
- Object
- DatabaseBackup
- Defined in:
- lib/jefferies_tube/database_backup.rb
Defined Under Namespace
Modules: Frequency
Constant Summary collapse
- BACKUP_DIR =
'db/backups'
Instance Attribute Summary collapse
-
#max_num_of_backups ⇒ Object
Returns the value of attribute max_num_of_backups.
Instance Method Summary collapse
- #backups ⇒ Object
- #cleanup ⇒ Object
- #create ⇒ Object
- #create_rotated(frequency) ⇒ Object
-
#initialize(database_backup_adapter, max_num_of_backups: 10) ⇒ DatabaseBackup
constructor
A new instance of DatabaseBackup.
- #restore(path) ⇒ Object
- #restore_most_recent ⇒ Object
- #symlink_file ⇒ Object
Constructor Details
#initialize(database_backup_adapter, max_num_of_backups: 10) ⇒ DatabaseBackup
Returns a new instance of DatabaseBackup.
11 12 13 14 15 |
# File 'lib/jefferies_tube/database_backup.rb', line 11 def initialize(database_backup_adapter, max_num_of_backups: 10) @database_backup_adapter = database_backup_adapter @max_num_of_backups = max_num_of_backups @rotate_frequency = nil end |
Instance Attribute Details
#max_num_of_backups ⇒ Object
Returns the value of attribute max_num_of_backups.
9 10 11 |
# File 'lib/jefferies_tube/database_backup.rb', line 9 def max_num_of_backups @max_num_of_backups end |
Instance Method Details
#backups ⇒ Object
45 46 47 |
# File 'lib/jefferies_tube/database_backup.rb', line 45 def backups Dir.glob(File.join(backup_path, '*')) end |
#cleanup ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/jefferies_tube/database_backup.rb', line 49 def cleanup # hourly - keep for 24 hours sh "find #{storage_path}/backup.hourly/ -mmin +1440 -exec rm -rv {} \\;" # daily - keep for 14 days sh "find #{storage_path}/backup.daily/ -mtime +14 -exec rm -rv {} \\;" # weekly - keep for 60 days sh "find #{storage_path}/backup.weekly/ -mtime +60 -exec rm -rv {} \\;" # monthly - keep for 300 days sh "find #{storage_path}/backup.monthly/ -mtime +300 -exec rm -rv {} \\;" end |
#create ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/jefferies_tube/database_backup.rb', line 17 def create FileUtils.mkdir_p backup_path @latest_backup_file = create_backup remove_symlink_to_old_backup create_symlink_to_new_backup delete_oldest_backup compress_old_backups @latest_backup_file end |
#create_rotated(frequency) ⇒ Object
27 28 29 30 31 |
# File 'lib/jefferies_tube/database_backup.rb', line 27 def create_rotated(frequency) @rotate_frequency = frequency create cleanup end |
#restore(path) ⇒ Object
33 34 35 |
# File 'lib/jefferies_tube/database_backup.rb', line 33 def restore(path) @database_backup_adapter.restore path end |
#restore_most_recent ⇒ Object
37 38 39 |
# File 'lib/jefferies_tube/database_backup.rb', line 37 def restore_most_recent @database_backup_adapter.restore symlink_file end |
#symlink_file ⇒ Object
41 42 43 |
# File 'lib/jefferies_tube/database_backup.rb', line 41 def symlink_file File.join backup_path, 'latest.dump' end |