Class: KamalBackup::Databases::Base
- Inherits:
-
Object
- Object
- KamalBackup::Databases::Base
- Defined in:
- lib/kamal_backup/databases/base.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#redactor ⇒ Object
readonly
Returns the value of attribute redactor.
Class Method Summary collapse
Instance Method Summary collapse
- #adapter_name ⇒ Object
- #backup(restic) ⇒ Object
- #backup_tags ⇒ Object
- #current_restore_command ⇒ Object
- #current_target_identifier ⇒ Object
- #database_filename ⇒ Object
- #dump_command ⇒ Object
- #dump_extension ⇒ Object
-
#initialize(config, redactor:) ⇒ Base
constructor
A new instance of Base.
- #restore_to_current(restic, snapshot, filename) ⇒ Object
- #restore_to_scratch(restic, snapshot, filename, target:) ⇒ Object
- #scratch_restore_command(target) ⇒ Object
- #scratch_target_identifier(target) ⇒ Object
- #validate_scratch_restore_target(target) ⇒ Object
Constructor Details
#initialize(config, redactor:) ⇒ Base
Returns a new instance of Base.
35 36 37 38 |
# File 'lib/kamal_backup/databases/base.rb', line 35 def initialize(config, redactor:) @config = config @redactor = redactor end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
33 34 35 |
# File 'lib/kamal_backup/databases/base.rb', line 33 def config @config end |
#redactor ⇒ Object (readonly)
Returns the value of attribute redactor.
33 34 35 |
# File 'lib/kamal_backup/databases/base.rb', line 33 def redactor @redactor end |
Class Method Details
.build(config, redactor:) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/kamal_backup/databases/base.rb', line 20 def self.build(config, redactor:) case config.database_adapter when 'postgres' Postgres.new(config, redactor: redactor) when 'mysql' Mysql.new(config, redactor: redactor) when 'sqlite' Sqlite.new(config, redactor: redactor) else raise ConfigurationError, "unsupported DATABASE_ADAPTER: #{config.database_adapter.inspect}" end end |
Instance Method Details
#adapter_name ⇒ Object
67 68 69 |
# File 'lib/kamal_backup/databases/base.rb', line 67 def adapter_name raise NotImplementedError end |
#backup(restic) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/kamal_backup/databases/base.rb', line 40 def backup(restic) restic.backup_stream( dump_command, filename: database_filename, tags: ) end |
#backup_tags ⇒ Object
63 64 65 |
# File 'lib/kamal_backup/databases/base.rb', line 63 def ['type:database', "database:#{config.database_name}", "adapter:#{adapter_name}"] end |
#current_restore_command ⇒ Object
79 80 81 |
# File 'lib/kamal_backup/databases/base.rb', line 79 def current_restore_command raise NotImplementedError end |
#current_target_identifier ⇒ Object
91 92 93 |
# File 'lib/kamal_backup/databases/base.rb', line 91 def current_target_identifier raise NotImplementedError end |
#database_filename ⇒ Object
57 58 59 60 61 |
# File 'lib/kamal_backup/databases/base.rb', line 57 def database_filename app = config.app_name.gsub(/[^A-Za-z0-9_.-]+/, '-') database = config.database_name.gsub(/[^A-Za-z0-9_.-]+/, '-') "databases/#{app}/#{database}/#{adapter_name}.#{dump_extension}" end |
#dump_command ⇒ Object
75 76 77 |
# File 'lib/kamal_backup/databases/base.rb', line 75 def dump_command raise NotImplementedError end |
#dump_extension ⇒ Object
71 72 73 |
# File 'lib/kamal_backup/databases/base.rb', line 71 def dump_extension raise NotImplementedError end |
#restore_to_current(restic, snapshot, filename) ⇒ Object
48 49 50 |
# File 'lib/kamal_backup/databases/base.rb', line 48 def restore_to_current(restic, snapshot, filename) restic.pipe_dump_to_command(snapshot, filename, current_restore_command) end |
#restore_to_scratch(restic, snapshot, filename, target:) ⇒ Object
52 53 54 55 |
# File 'lib/kamal_backup/databases/base.rb', line 52 def restore_to_scratch(restic, snapshot, filename, target:) validate_scratch_restore_target(target) restic.pipe_dump_to_command(snapshot, filename, scratch_restore_command(target)) end |
#scratch_restore_command(target) ⇒ Object
83 84 85 |
# File 'lib/kamal_backup/databases/base.rb', line 83 def scratch_restore_command(target) raise NotImplementedError end |
#scratch_target_identifier(target) ⇒ Object
95 96 97 |
# File 'lib/kamal_backup/databases/base.rb', line 95 def scratch_target_identifier(target) raise NotImplementedError end |
#validate_scratch_restore_target(target) ⇒ Object
87 88 89 |
# File 'lib/kamal_backup/databases/base.rb', line 87 def validate_scratch_restore_target(target) config.validate_database_restore_target(scratch_target_identifier(target)) end |