2016-02-21 41 views
0
desc "Takes a database dump from remote server" 
    task :backup do 
    invoke 'db:backup_name' 
     on roles(:db) do 

    run "mysqldump -u #{fetch(:db_username)} -p#{fetch(:db_password)} #{fetch(:db_database)} > #{shared_path}/db_backups/#{fetch(:backup_filename)}.sql" 

    system('mkdir -p db_backups') 
    download! "#{fetch(:backup_file)}", "db_backups/#{fetch(:backup_filename)}.sql" 

    within release_path do 
     execute :rm, "#{fetch(:backup_file)}" 
    end 

    end 
end 

我得到这个错误:在这条线错误的参数数目(1 0)运行Capistrano的时候(红宝石)

wrong number of arguments (1 for 0) 

run "mysqldump -u #{fetch(:db_username)} -p#{fetch(:db_password)} #{fetch(:db_database)} > #{shared_path}/db_backups/#{fetch(:backup_filename)}.sql" 

如果我把内容这并在远程服务器上运行它 - 它工作正常。真的不知道为什么红宝石抛出这个错误。

回答

1

尝试使用backticks代替:

`mysqldump -u #{fetch(:db_username)} -p#{fetch(:db_password)} #{fetch(:db_database)} > #{shared_path}/db_backups/#{fetch(:backup_filename)}.sql`