class Backup::Database::Base
Attributes
database_id[R]
dump_path[R]
model[R]
Public Class Methods
new(model, database_id = nil)
click to toggle source
If given, database_id
will be appended to the dump_filename
. This is required if multiple Databases of the same class are added to the model.
# File lib/backup/database/base.rb, line 15 def initialize(model, database_id = nil) @model = model @database_id = database_id.to_s.gsub(/\W/, "_") if database_id @dump_path = File.join(Config.tmp_path, model.trigger, "databases") load_defaults! end
Public Instance Methods
perform!()
click to toggle source
# File lib/backup/database/base.rb, line 22 def perform! log!(:started) prepare! end
Private Instance Methods
database_name()
click to toggle source
# File lib/backup/database/base.rb, line 71 def database_name @database_name ||= self.class.to_s.sub("Backup::", "") + (database_id ? " (#{database_id})" : "") end
dump_filename()
click to toggle source
Sets the base filename for the final dump file to be saved in dump_path
, based on the class name. e.g. databases/MySQL.sql
database_id
will be appended if it is defined. e.g. databases/MySQL-database_id.sql
If multiple Databases of the same class are defined and no database_id
is defined, the user will be warned and one will be auto-generated.
Model#initialize calls this method after all defined databases have been initialized so ‘backup check` can report these warnings.
# File lib/backup/database/base.rb, line 45 def dump_filename @dump_filename ||= begin unless database_id if model.databases.select { |d| d.class == self.class }.count > 1 sleep 1 @database_id = Time.now.to_i.to_s[-5, 5] Logger.warn Error.new(<<-EOS) Database Identifier Missing When multiple Databases are configured in a single Backup Model that have the same class (MySQL, PostgreSQL, etc.), the optional +database_id+ must be specified to uniquely identify each instance. e.g. database MySQL, :database_id do |db| This will result in an output file in your final backup package like: databases/MySQL-database_id.sql Backup has auto-generated an identifier (#{database_id}) for this database dump and will now continue. EOS end end self.class.name.split("::").last + (database_id ? "-#{database_id}" : "") end end
log!(action)
click to toggle source
# File lib/backup/database/base.rb, line 76 def log!(action) msg = case action when :started then "Started..." when :finished then "Finished!" end Logger.info "#{database_name} #{msg}" end
prepare!()
click to toggle source
# File lib/backup/database/base.rb, line 29 def prepare! FileUtils.mkdir_p(dump_path) end