class DeeBee::Backup
Attributes
backup_settings[R]
Public Class Methods
new(configuration = DeeBee::Configuration.new)
click to toggle source
# File lib/dee_bee/backup.rb, line 9 def initialize (configuration = DeeBee::Configuration.new) @backup_settings = configuration.settings['backup'] end
Public Instance Methods
execute()
click to toggle source
# File lib/dee_bee/backup.rb, line 13 def execute puts "\nCreating backup..." time_elapsed_for("Create backup") do if performing_mysql_backup? validate_my_cnf_present validate_host_setting_present validate_database_name_setting_present validate_path_exists # NOTE - no use of -u or -p as we are using ~/.my.cnf for these arguments run_command("/usr/bin/env mysqldump -h#{database_host} #{database_name} | gzip > #{backup_filepath}") validate_mysqldump_created_file else raise "Unknown/empty database adapter. Please correct your settings yaml" end end end
Private Instance Methods
backup_filepath()
click to toggle source
# File lib/dee_bee/backup.rb, line 58 def backup_filepath if @backup_filepath.nil? directory = backup_settings['directory'] file_prefix = backup_settings['file_prefix'] @backup_filepath = File.join(directory, "#{file_prefix}_#{Time.now.strftime('%Y%m%d_%H%M%S')}.sql.gz") end @backup_filepath end
database_host()
click to toggle source
# File lib/dee_bee/backup.rb, line 76 def database_host backup_settings['database']['host'] rescue nil end
database_name()
click to toggle source
# File lib/dee_bee/backup.rb, line 80 def database_name backup_settings['database']['database_name'] rescue nil end
database_provider()
click to toggle source
# File lib/dee_bee/backup.rb, line 84 def database_provider backup_settings['database']['provider'] rescue nil end
performing_mysql_backup?()
click to toggle source
# File lib/dee_bee/backup.rb, line 34 def performing_mysql_backup? database_provider.downcase =~ /mysql/ end
validate_database_name_setting_present()
click to toggle source
# File lib/dee_bee/backup.rb, line 46 def validate_database_name_setting_present raise "database name not defined in setting yaml file" if database_name.nil? end
validate_host_setting_present()
click to toggle source
# File lib/dee_bee/backup.rb, line 42 def validate_host_setting_present raise "database host not defined in setting yaml file" if database_host.nil? end
validate_my_cnf_present()
click to toggle source
# File lib/dee_bee/backup.rb, line 38 def validate_my_cnf_present raise "~/.my.cnf file not found. Please create and define user and password arguments" unless File.exists?( File.expand_path("~/.my.cnf") ) end
validate_mysqldump_created_file()
click to toggle source
# File lib/dee_bee/backup.rb, line 68 def validate_mysqldump_created_file if File.exists?(backup_filepath) puts " created #{backup_filepath}" else raise "Backup did not create file!" end end
validate_path_exists()
click to toggle source
# File lib/dee_bee/backup.rb, line 50 def validate_path_exists directories = backup_filepath.split(File::SEPARATOR).map{ |directory| directory.empty? ? nil : directory }.compact[0..-2] (0..(directories.size-1)).each do |index| directory = "#{File::SEPARATOR}#{directories[0..index].join(File::SEPARATOR)}" raise "Directory does not exist => #{directory}" unless File.exists?(directory) end end