У меня нет задачи rake для резервного копирования моей базы данных MySQL, но я написал скрипт на Ruby, чтобы сделать это для моей базы данных WordPress:
filename = 'wp-config.php'
def get_db_info(file)
username = nil
password = nil
db_name = nil
file.each { |line|
if line =~ /'DB_(USER|PASSWORD|NAME)', '([[:alnum:]]*)'/
if $1 == "USER"
username = $2
elsif $1 == "PASSWORD"
password = $2
elsif $1 == "NAME"
db_name = $2
end
end
}
if username.nil? || password.nil? || db_name.nil?
puts "[backup_db][bad] couldn't get all needed info"
exit
end
return username, password, db_name
end
begin
config_file = open("#{filename}")
rescue Errno::ENOENT
puts "[backup_db][bad] File '#{filename}' didn't exist"
exit
else
puts "[backup_db][good] File '#{filename}' existed"
end
username, password, db_name = get_db_info(config_file)
sql_dump_info = `mysqldump --user=#{username} --password=#{password} #{dbname}`
puts sql_dump_info
Вы должны быть в состоянии взять это и сделать небольшую обрезку, чтобы ввести свое имя пользователя / пароль / имя базы данных, чтобы оно заработало и работало на вас. Я помещаю его в свой crontab для ежедневного запуска, и не нужно слишком много работать, чтобы преобразовать его в задачу rake, так как это уже код Ruby (может быть и хорошим обучающим упражнением).
Расскажите нам, как это происходит!