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.
24 25 26 27 |
# File 'lib/kamal_backup/databases/base.rb', line 24 def initialize(config, redactor:) @config = config @redactor = redactor end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
22 23 24 |
# File 'lib/kamal_backup/databases/base.rb', line 22 def config @config end |
#redactor ⇒ Object (readonly)
Returns the value of attribute redactor.
22 23 24 |
# File 'lib/kamal_backup/databases/base.rb', line 22 def redactor @redactor end |
Class Method Details
.build(config, redactor:) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/kamal_backup/databases/base.rb', line 9 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
56 57 58 |
# File 'lib/kamal_backup/databases/base.rb', line 56 def adapter_name raise NotImplementedError end |
#backup(restic) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/kamal_backup/databases/base.rb', line 29 def backup(restic) restic.backup_stream( dump_command, filename: database_filename, tags: ) end |
#backup_tags ⇒ Object
52 53 54 |
# File 'lib/kamal_backup/databases/base.rb', line 52 def ['type:database', "database:#{config.database_name}", "adapter:#{adapter_name}"] end |
#current_restore_command ⇒ Object
68 69 70 |
# File 'lib/kamal_backup/databases/base.rb', line 68 def current_restore_command raise NotImplementedError end |
#current_target_identifier ⇒ Object
80 81 82 |
# File 'lib/kamal_backup/databases/base.rb', line 80 def current_target_identifier raise NotImplementedError end |
#database_filename ⇒ Object
46 47 48 49 50 |
# File 'lib/kamal_backup/databases/base.rb', line 46 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
64 65 66 |
# File 'lib/kamal_backup/databases/base.rb', line 64 def dump_command raise NotImplementedError end |
#dump_extension ⇒ Object
60 61 62 |
# File 'lib/kamal_backup/databases/base.rb', line 60 def dump_extension raise NotImplementedError end |
#restore_to_current(restic, snapshot, filename) ⇒ Object
37 38 39 |
# File 'lib/kamal_backup/databases/base.rb', line 37 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
41 42 43 44 |
# File 'lib/kamal_backup/databases/base.rb', line 41 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
72 73 74 |
# File 'lib/kamal_backup/databases/base.rb', line 72 def scratch_restore_command(target) raise NotImplementedError end |
#scratch_target_identifier(target) ⇒ Object
84 85 86 |
# File 'lib/kamal_backup/databases/base.rb', line 84 def scratch_target_identifier(target) raise NotImplementedError end |
#validate_scratch_restore_target(target) ⇒ Object
76 77 78 |
# File 'lib/kamal_backup/databases/base.rb', line 76 def validate_scratch_restore_target(target) config.validate_database_restore_target(scratch_target_identifier(target)) end |