Ich möchte die Ausgabe von mysqldump einer Variablen zuweisen und die generierte Ausgabe später verwenden.
Versuch 1:
> 1.9.3-p125 :020 > x = `mysqldump falala` mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when
> trying to connect
=> ""
> 1.9.3-p125 :021 > x
=> ""
Nö. X kommt leer zurück, kann nicht einmal prüfen, ob ein Fehler aufgetreten ist
Versuch 2:
> 1.9.3-p125 :022 > x = system("mysqldump falala") mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO)
> when trying to connect
=> false
1.9.3-p125 :023 > x
=> false
Besser. Auf diese Weise hat x die Information, ob der Befehl erfolgreich war, aber immer noch keine Konsolenausgabe.
Ich bin noch neu in Ruby, aber ich denke, was passiert, ist, dass Ruby weiterhin ausgeführt wird, ohne zu warten, dass mysqldump seine Sache zu tun, aber ich brauche wirklich diese Ausgabe (weil im Falle eines Fehlers, das Skript die Fehler/Konsole Ausgabe mailen würde)
Der vollständige Befehl, den ich ausführen muss, lautet etwa so
mysqldump --host=#{host} --user=#{user} --password=#{pass} #{name} | gzip -9 > #{name}.sql.gz